この投稿の目的から始めましょう。
ユーザーの地域設定が異なる日付と時刻に関して問題が発生し、それらをどのように処理しましたか?
スクリプトを実行し、それらのスクリプトを共有するときに、時々、異なる時刻形式 (および日付) に関する問題に直面することがあります (最近、異なるロケールと JMP 設定を持つユーザーと作業しています)。 JMP では時刻の「一般的な」形式が提供されていないため、この問題は通常、時刻形式に関連しています (日付については Locale Date を使用できます)。
JMP16 より前に、ユーザーが : または を使用しているかどうかを確認する独自のコードを作成しました。時刻区切り文字として使用し、それに基づいてロケール日付時刻形式を構築しました。
timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1);
customFormat = "Locale Date Time h"||timeSeparator||"m"||timeSeparator||"s";
JMP16 はフォーマット パターンを使用してこれに役立ちますが、フォーマットを行うときに使用するのが最も簡単なパターンではありません (ユーザーは時間区切り文字として <::> を使用することを知っておく必要があります)。
<HH24><::><MM> <::><SS> ");</SS></MM></HH24> 何をしているかに応じて、さまざまな解決策があります。テキストボックスに日付と時刻を入れたいだけの場合は、通常はAsDate()を使用しますが、特定のレポートを作成したい場合や、カレンダーボックスオプションを備えた数値編集ボックスをGUIに提供したい場合は、それは使えません。以下は、JMP バージョンに応じて現在使用している問題と解決策の例です。もっと見る...(ハイライトして読んでください)Names Default To Here(1);
Clear Log();
Print("New window");
nw = New Window("", Lineup Box(N Col(2),
Text Box("Format Pattern <-><MM> <-><YYYY><HH24> <::><MM> <::><SS> ", << Set Wrap(500)), cal1 = 数値編集ボックス(Today()), テキスト ボックス("ロケール日時 h:m:s", << Set Wrap(500)), cal2 = 数値編集ボックス(Today()), Text Box("Locale Date Time hms", << Set Wrap(500)), cal3 = Number Edit Box(Today()), Text Box("yyyy-mm-ddThh:mm:ss") , << Set Wrap(500)), //ISO 形式? cal4 = 数値編集ボックス(Today()), テキスト ボックス("構築されたロケール日付形式", << Set Wrap(500)), cal5 = 数値編集ボックス(Today()), Text Box("書式なし", << Set Wrap(500)), cal6 = 数値編集ボックス(Today()) )); cal1 << Set Format(Format("書式パターン", "</SS></MM></HH24></YYYY></MM><-> <-> <::> <::> ")); cal2 << Set Format(Format("Locale Date Time h:m:s")); cal3 << Set Format(Format("Locale Date Time hms")); cal4 << Set Format(Format( "yyyy-mm-ddThh:mm:ss")); timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1); カスタムフォーマット= "ロケール日付時刻 h"||timeSeparator||"m"||timeSeparator||"s"; cal5 << Set Format(customFormat); Print("Show"); Show(Format(Today(),"Formatパターン"、 "<-> <-> <::> <::> ")); Show(Format(Today(),"ロケール日付時刻 h:m:s")); Show(Format(Today()(),"ロケール日付時刻 hms")); Show(Format(Today( ),"yyyy-mm-ddThh:mm:ss")); Show(Format(Today(),customFormat)); Show(Today()); Print("データ テーブル"); dt = New Table("無題"、行を追加(1)、保存時にファイルを圧縮(1)、新しい列("FormatPattern"、数値、"Continuous"、Format("Best", 12)、<<各値を設定(Today()))、新しい列("LocaleDateTime:", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today())), New Column("LocaleDateTime.", Numeric, "Continuous", Format ("Best", 12), << 各値を設定(Today())), 新しい列("ISO?", Numeric, "Continuous", Format("Best", 12), << 各値を設定(Today) ()))、新しい列("カスタム"、数値、"連続"、フォーマット("ベスト"、12)、<<各値を設定(Today()))、新しい列("NoFormat"、数値、"連続" ", Format("Best", 12), << 各値を設定(Today())) ); Column(dt, "FormatPattern") << Format("書式パターン", "<-><MM><-><YYYY><HH24> <::><MM> <::><SS> "); Column(dt, "LocaleDateTime:") << Format("Locale Date Time h:m:s"); Column(dt, "LocaleDateTime.") << Format("Locale Date Time hms"); Column (dt, "ISO?") << Format("yyyy-mm-ddThh:mm:ss"); Column(dt, "Custom") << Format(customFormat); Show(Today());</SS></MM></HH24></YYYY></MM>Format("Format Pattern", "<YYYY><-><MM> <-></MM></YYYY>
JMP16 を使用した私の結果:
JMP での一般時刻形式オプション (ロケール日付時刻、または ISO 形式) についての JMP サポート機能リクエストを作成しましたが、サポート担当者はそれが実装されることをあまり期待していませんでした (おそらくウィッシュ リスト項目を作成し、それは賞賛に値します、それはより良いチャンスを得るかもしれません)。
そして質問を繰り返します:
日付と時刻に関してこのような問題が発生したことがありますか? ユーザーの地域設定が異なる場合にどのように対処しましたか?
編集:
JMP16 Pro を使用して職場のラップトップから設定をフォーマットします。
JMP15 を使用した非常に奇妙な日付形式を使用する他の PC から:
この動作は、遅くともJMP17で変更される予定です。 以下は、JMP17でどのように機能するかの例です。
Format(Today(), "Locale Date Time h:m:s"); = "12/07/2021 16.07.20"
Format(Today(), "Locale Date Time h.m.s"); = "12/07/2021 16.07.20"
JMP17までは、フォーマットパターン(JMP16)またはロケール日付の作成方法のいずれかを使用します。