次のシナリオを考えてみましょう。
MyDateStr = "2/19/2018 10:04:28 PM";
informat(MyDateStr, "m/d/yh:m:s");
これにより、JMP ログに正しい日付/時刻値 ( 19Feb2018:22:04:28 ) が返されます。コンピュータの日付/時刻形式が hh:mm:ss に設定されている限り(つまり 12 時間)
コンピュータの形式を 24 時間時刻 ( HH:mm:ss ) に設定し、上記のコードを実行すると、JMP は欠損値を返します。 日付を正しく解釈できません。 末尾の「PM」を削除すると機能します。
24 時間制に設定されたコンピュータ上で JMP を実行しているときに、12 時間制で指定された日付/時刻文字列を正しく解析するにはどうすればよいですか?
私はそれを 1 ライナーでは実行できないと結論付けました。
<< use Locale(0) は私のマシンには効果がありません。コンピュータが 12 時間に設定されていない限り、AM/PM を含むタイムスタンプは解釈されません。
同様のディスカッションを見つけましたここ。
私の結論は、これを確実に実行できる唯一の方法は次のとおりです。
午前午後=部分文字列(タイムスタンプ文字列、- 2 、 2 ) ;
タイムスタンプ文字列=代わりの(タイムスタンプ文字列、 " 午前" 、 「」 、 「午後」 、 「」 ) ;
マッチ(午前午後、
"午前" 、試す( :タイムスタンプ=情報を与える(タイムスタンプ文字列、 「月/日/yh:m:s」 )) ;
、
「午後」 、試す( :タイムスタンプ=情報を与える(タイムスタンプ文字列、 「月/日/yh:m:s」 ) +時間内( 12 ))
) ;
これはかなり些細なことを行うための大量のコードですが、実際には機能します
やあ、
これは「メアリーおめでとう」タイプの返信です。 Informat( MyDateStr ) または同等の機能を使用すると何が得られますか?
日付( MyDateStr )を解析します。
また、本の中で、 JMPの使用章列情報ウィンドウ「ロケールの日付はローカル OS の設定に基づいて変化します。」と記載されています。そしてそのJSL 構文リファレンスショー
Format( x, "通貨", "EUR", 20, <
InFormat() と Parse Date() は 3 番目の引数 <
そこで、私の「メアリー万歳」の提案は次のとおりです。
- Informat( MyDateStr ) を単独で使用する
- use Informat( MyDateStr, "m/d/yh:m:s", << Use Locale(0) );
- 文字列から列を作成する
スクリプトを参照してください。30/12/... を適切に変換する場合でも Informat() の威力を示しています。 しかし、適切な変換 (少なくとも以前の方法) は機能しなくなりました。うまくいくものが見つかることを願っています。
//------#6: Create a data table with a Character column of different date time formats
dtimeList={};
InsertInto( dtimeList, "JUN162010 2:59:13");
InsertInto( dtimeList, Format(AsDate(Today()), "yyyy-mm-ddThh:mm:ss"));
InsertInto( dtimeList,Format(AsDate(Today() - 3*34*60), "yyyy-mm-ddThh:mm"));
InsertInto( dtimeList,Format(AsDate(Today() + 12*34*60), "yyyy-mm-ddThh:mm"));
InsertInto( dtimeList, "12/01/2010");
InsertInto( dtimeList, "01/12/2010");
InsertInto( dtimeList, "30/12/2010 1:1:1");
test3_dt = New Table ("Test Datetime", new Column("dummy", character));
test3_dt << add rows( nitems(dtimelist));
test3_dt:dummy << set values (dtimeList);
//----run to here---------------------------------------------------------
//----Look at the data table...create a new column using Parse Date function
convCol = test3_dt << New Column( "Parsed dummy", Numeric, Continuous );
convCol << set each value (Informat(:dummy) );
convCol << Format("monddyyyy h:m:s");
wait(2);
convCol << Format("m/d/y h:m:s");
//---The code below worked in JMP 8 and 9 and 10 and maybe 11. It does not work in JMP 12, 13, 14
//Also, even though the column has mixed formats, by converting to numeric,
//continuous and specifying a datetime format, JMP automatically parses the dates
//:dummy << {data type( "Numeric"), Modeling Type("Continuous") };
//:dummy << Format("m/d/y h:m:s" );
たとえ
<< Use Locale(0)
私の場合はうまくいきました。ドキュメントのどこにも見つかりませんでした。日付/時刻の変換は本当に難しいですね。