我們先來談談這篇文章的目的:
當使用者有不同的區域設定時,您是否遇到過日期和時間問題?您是如何處理這些問題的?
在編寫腳本和共享這些腳本時,我有時會遇到不同時間格式(和日期)的問題(最近一直在與具有不同區域設定和 JMP 設定的使用者一起工作)。此問題通常與時間格式有關,因為 JMP 不提供時間的「通用」格式(對於日期,我可以使用區域設定日期)。
在 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> ", << 設定換行(500)), cal1 = 數字編輯框(Today()), 文字方塊("區域設定日期時間h:m:s", << 設定換行(500)), cal2 = 數字編輯框(Today()), 文字方塊("區域設定日期時間hms", << 設定換行(500)), cal3 = 數字編輯框(Today()), 文字方塊("yyyy-mm-ddThh:mm: ss" , << Set Wrap(500)), //ISO 格式? cal4 = 數位編輯框(Today()), Text Box("建置區域設定日期格式", << Set Wrap(500)), cal5 =數字編輯框(Today()), 文字方塊("無格式", << 設定換行(500)), cal6 = 數字編輯框(Today()) )); cal1 << 設定格式(Format("格式模式", "</SS></MM></HH24></YYYY></MM><-> <-> <::> <::> ")); cal2 << 設定格式(Format("區域設定日期時間h:m:s")); cal3 << 設定格式(Format("區域設定日期時間hms")); cal4 << 設定格式( Format( "yyyy-mm-ddThh:mm:ss")); timeSeparator = Left(Regex(Format(Today() ,"h:m:s"), "\d", "", GLOBALREPLACE),1) ; customFormat = "區域設定日期時間h"||timeSeparator||"m"||timeSeparator||"s"; cal5 << 設定格式(customFormat); Print("顯示"); Show(格式(Today() ,"格式圖案”, ”<-> <-> <::> <::> ")); 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 = 新表( "無標題", 新增行(1), 儲存時壓縮檔案(1), 新欄位("FormatPattern", Numeric, "Continuous", Format("Best", 12), << 設定每個值(Today( ))),新列(“LocaleDateTime:”,數字,“連續”,格式(“最佳”,12),<<設定每個值(今天())),新列(“LocaleDateTime。”,數字,“連續”,格式("最佳", 12), << 設定每個值(今天())), 新列("ISO?", 數字, "連續", 格式("最佳", 12 ), << 設定每個值(今天())), 新列("自訂", 數字, "連續", 格式("最佳", 12), << 設定每個值(今天()) ), 新欄位("NoFormat", 數字, "連續", Format("最佳", 12), << 設定每個值(Today())) ); Column(dt, "FormatPattern") << Format ("格式模式", "<-><MM><-><YYYY><HH24> <::><MM> <::><SS> "); Column(dt, "LocaleDateTime:") << Format("區域設定日期時間h:m:s"); Column(dt, "LocaleDateTime.") << Format("區域設定日期時間hms") ; Column (dt, "ISO?") << 格式("yyyy-mm-ddThh:mm:ss"); 列(dt, "自訂") << 格式(customFormat); 顯示(Today());</SS></MM></HH24></YYYY></MM>Format("Format Pattern", "<YYYY><-><MM> <-></MM></YYYY>
我使用 JMP16 的結果:
我已經創建了關於在 JMP 中具有常規時間格式選項(區域設定日期時間或 ISO 格式)的 JMP 支援功能請求,但支援人員不太希望它能夠實現(也許如果我創建願望清單項目並它會得到榮譽,它可能會得到更好的機會)。
並重複問題:
您是否遇到過這些日期和時間問題?當使用者有不同的區域設定時,您是如何處理這些問題的?
編輯:
使用 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) 或我的 Locale Date 構建方法