讓我們從這篇文章的目的開始:
當用戶具有不同的區域設置時,您是否遇到過日期和時間方面的問題?您是如何處理這些問題的?
在編寫腳本和共享這些腳本時,我不時遇到不同時間格式(和日期)的問題(最近一直在與具有不同語言環境和 JMP 設置的用戶一起工作)。 此問題通常與時間格式有關,因為 JMP 不提供時間的“通用”格式(對於日期,我可以使用區域設置日期)。
在 JMP16 之前,我已經編寫了自己的代碼來檢查用戶是否使用 : 或 .作為時間分隔符,然後基於它構建 Locale Date Time 格式:
timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1);
customFormat = "Locale Date Time h"||timeSeparator||"m"||timeSeparator||"s";
JMP16 通過 Format Pattern 幫助解決此問題,但在進行格式化時使用它並不是最簡單的(用戶必須知道使用 <::> 作為時間分隔符):
<-><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 支持功能請求,要求在 JMP 中設置通用時間格式選項(區域設置日期時間或 ISO 格式),但支持人員對它的實施不太抱有希望(也許如果我創建一個願望清單項目和它獲得了榮譽,它可能會獲得更好的機會)。
並重複這個問題:
您是否遇到過這些日期和時間問題?當用戶具有不同的區域設置時,您是如何處理這些問題的?
編輯:
使用 JMP16 Pro 從我的工作筆記本電腦格式化設置:
從我的另一台電腦上使用 JMP15 使用非常奇怪的日期格式:
數據表腳本編寫此行為最遲將在 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) 或我的語言環境日期構建方法