この投稿の目的から始めましょう:
ユーザーの地域設定が異なる日時に問題があり、それらをどのように処理しましたか?
スクリプトを作成してそれらのスクリプトを共有するときに、さまざまな時間形式(および日付)で問題が発生することがあります(最近、さまざまなロケールおよびJMP設定を持つユーザーと作業しています)。 JMPは時間の「一般的な」形式を提供しないため、この問題は通常、時間形式に関連しています(日付にはロケール日付を使用できます)。
JMP16の前に、ユーザーが:またはを使用しているかどうかを確認するために独自のコードを作成しました。時間区切り文字として使用し、それに基づいてロケール日付時刻形式を作成しました。
timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1);
customFormat = "Locale Date Time h"||timeSeparator||"m"||timeSeparator||"s";
JMP16はフォーマットパターンでこれを支援しますが、フォーマットを行うときに使用するのは最も簡単なものではありません(ユーザーは時間区切りに<::>を使用することを知っている必要があります):
<-><MM><-><YYYY> <HH24><::><MM><::><SS>", << Set Wrap(500)),
cal1 = Number Edit Box(Today()),
Text Box("Locale Date Time h:m:s", << Set Wrap(500)),
cal2 = Number Edit Box(Today()),
Text Box("Locale Date Time h.m.s", << Set Wrap(500)),
cal3 = Number Edit Box(Today()),
Text Box("yyyy-mm-ddThh:mm:ss", << Set Wrap(500)), //ISO format?
cal4 = Number Edit Box(Today()),
Text Box("Built locale date format", << Set Wrap(500)),
cal5 = Number Edit Box(Today()),
Text Box("No format", << Set Wrap(500)),
cal6 = Number Edit Box(Today())
));
cal1 << Set Format(Format("Format Pattern", "</SS></MM></HH24></YYYY></MM><-><-> <::><::>"));
cal2 << Set Format(Format("Locale Date Time h:m:s"));
cal3 << Set Format(Format("Locale Date Time h.m.s"));
cal4 << Set Format(Format("yyyy-mm-ddThh:mm:ss"));
timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1);
customFormat = "Locale Date Time h"||timeSeparator||"m"||timeSeparator||"s";
cal5 << Set Format(customFormat);
Print("Show");
Show(Format(Today(),"Format Pattern", "<-><-> <::><::>"));
Show(Format(Today(),"Locale Date Time h:m:s"));
Show(Format(Today()(),"Locale Date Time h.m.s"));
Show(Format(Today(),"yyyy-mm-ddThh:mm:ss"));
Show(Format(Today(),customFormat));
Show(Today());
Print("Data table");
dt = New Table("Untitled",
Add Rows(1),
Compress File When Saved(1),
New Column("FormatPattern", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today())),
New Column("LocaleDateTime:", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today())),
New Column("LocaleDateTime.", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today())),
New Column("ISO?", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today())),
New Column("Custom", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today())),
New Column("NoFormat", Numeric, "Continuous", Format("Best", 12), << Set Each Value(Today()))
);
Column(dt, "FormatPattern") << Format("Format Pattern", "<-><-> <::><::>");
Column(dt, "LocaleDateTime:") << Format("Locale Date Time h:m:s");
Column(dt, "LocaleDateTime.") << Format("Locale Date Time h.m.s");
Column(dt, "ISO?") << Format("yyyy-mm-ddThh:mm:ss");
Column(dt, "Custom") << Format(customFormat);
Show(Today());Format("Format Pattern", "<YYYY><-><MM><-><DL><DD> <HH24><::><MM><::><SS>");<P> </P><P>私がしていることに応じて、さまざまな解決策があります。テキストボックスに日付と時刻を表示したい場合は、通常AsDate()を使用しますが、特定のレポートを作成したり、カレンダーボックスオプションを備えた数値編集ボックスをGUIに提供したりする場合使えません。</P><P>以下は、JMPのバージョンに応じて現在使用している問題と解決策の例です。</P><DIV class="lia-spoiler-container"><A class="lia-spoiler-link" href="#" rel="nofollow noopener noreferrer" target="_blank">もっと見る...</A><NOSCRIPT>(読むためのハイライト)</NOSCRIPT><DIV class="lia-spoiler-border"><DIV class="lia-spoiler-content"><PRE><CODE class=" language-jsl">Names Default To Here(1);
Clear Log();
Print("New window");
nw = New Window("", Lineup Box(N Col(2),
Text Box("Format Pattern
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)またはロケール日付の作成方法のいずれかを使用します。