將日期從字符串轉換為 JMP 日期:AM/PM 與 24 小時時間問題考慮以下場景:
MyDateStr = "2/19/2018 10:04:28 PM";
信息(MyDateStr,“月/日/年:分:秒”);
這會在 JMP 日誌中返回正確的日期/時間值 ( 19Feb2018:22:04:28 ),只要我電腦上的日期/時間格式設置為 hh:mm:ss tt (即12小時時間)
如果我將計算機上的格式設置為 24 小時時間 ( HH:mm:ss ) 並且運行上述代碼,JMP 會給出缺失值。 它無法正確解釋日期。 如果我把“PM”從末尾去掉,它就會起作用。
在設置為 24 小時時間的計算機上運行時,如何讓 JMP 正確解析以 12 小時時間指定的日期/時間字符串?
回复:將日期從字符串轉換為 JMP 日期:AM/PM 與 24 小時時間問題我得出的結論是,這不能在 1 個班輪中完成:
<< use Locale(0) 對我的計算機沒有影響,它仍然不會解釋包含 AM/PM 的時間戳,除非計算機設置為 12 小時時間。
我發現了類似的討論這裡。
我的結論是我可以可靠地做到這一點的唯一方法是這樣的:
上午下午=子字符串(時間戳字符串,- 2 , 2 ) ;
時間戳字符串=代替(時間戳字符串, “ 是” , ”” , “下午” , ”” ) ;
匹配(上午下午,
“是” ,嘗試( :時間戳=提供信息(時間戳字符串, “月/日/年:月:秒” )) ;
,
“下午” ,嘗試( :時間戳=提供信息(時間戳字符串, “月/日/年:月:秒” ) +幾小時內( 12 ))
) ;
這是一大堆代碼來完成一些相當瑣碎的事情,但它確實有效
回复:將日期從字符串轉換為 JMP 日期:AM/PM 與 24 小時時間問題你好,
這是“萬福瑪麗”類型的回复。 如果您只使用 Informat( MyDateStr ) 或等效方法,您會得到什麼,
解析日期(MyDateStr)。
另外,書中使用 JMP章節列信息窗口它指出“區域設置日期因本地操作系統設置而異。”還有JSL 語法參考節目
格式( x, "貨幣", "歐元", 20, <<使用區域設置(0)); // 忽略計算機區域設置
InFormat() 和 Parse Date() 顯示第三個參數 <
所以我的“萬福瑪麗”建議是:
- 單獨使用 Informat( MyDateStr )
- use Informat( MyDateStr, "m/d/yh:m:s", << 使用 Locale(0) );
- 從字符串創建一列
看劇本。它顯示了 Informat() 的強大功能,甚至可以正確轉換 30/12/.... 但就地轉換(至少我們以前的方法)不再有效。我希望你能找到有用的東西。
//------#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" );
回覆:將日期從字串轉換為 JMP 日期:AM/PM 與 24 小時時間問題甚至連
<< Use Locale(0)
為我工作。我在文檔中沒有發現這一點。天啊,日期/時間轉換太難了!