带时间的 Informat (ParseDate) 函数你好,
我对 Informat 函数(或其别名 ParseDate)有疑问。 如果我有一个包含日期和时间信息的字符串,我会尝试在 JMP 15.2.0 上解析日期。
str="2022-10-22 16:25:37";
datetime= Informat( str, "yyyy-mm-dd HH:mm:ss" );
show(type(datetime));
show(datetime);
根据日期时间设置 (Win 10),我得到不同类型的输出。
区域格式英语(英国):
str = "2022-10-22 16:23:37";
类型(日期时间)=“日期”;
日期时间 = 22Oct2022:16:23:37;
或区域格式芬兰语(芬兰):
str = "2022-10-22 16:23:37";
类型(日期时间)=“数字”;
日期时间 = .;
有没有可以解析时间的函数? 或者有建议如何做到这一点?
脚本视窗回复:带时间的 Informat (ParseDate) 函数谢谢,此示例适用于测试的日期时间设置。
回复:带时间的 Informat (ParseDate) 函数我用过<< 使用 Locale() 解决日期和时间格式问题。 您提供的示例没有解决问题,我想我稍后有时间再回来讨论这个问题(双关语)。 该示例的问题很可能已通过 << Use Locale() 解决。如果我得到更新版本的 JMP,我也会尝试格式模式。
再次感谢分享您的知识。
回复:带时间的 Informat (ParseDate) 函数这是处理此问题的一种方法
str="2022-10-22 16:25:37";
datetime = datemdy(num(word(2,str," -:")),
num(word(3,str," -:")),
num(word(1,str," -:")) ) +
3600*num(word(4,str," -:")) +
60 * num(word(5,str," -:")) +
num(word(6,str," -:")
);
show(format(datetime,"m/d/y h:m:s"));
它显示在日志中
Format(datetime, "m/d/y h:m:s") = "10/22/2022 4:25:37 PM";
回复:带时间的 Informat (ParseDate) 函数检查使用 << Use Locale() 是否有帮助。
在 JMP16 之前,JMP 在管理时间(和日期)方面相当糟糕。 我很可能会将字符串解析为年、月、日、小时、分钟和秒。 然后将它们相加得到 date_time。 使用 JMP16,您很可能只使用 Format Pattern
也许这可以提供一些想法:
Names Default To Here(1);
str = "2022-10-22 16:25:37";
date = Word(1, str, " ");
time = Word(2, str, " ");
y = Num(Word(1, date, "-"));
m = Num(Word(2, date, "-"));
d = Num(Word(3, date, "-"));
time_separator = Left(Regex(Format(Today(), "h:m:s"), "\d", "", GLOBALREPLACE), 1);
hh = Num(Word(1, time, time_separator));
mm = Num(Word(2, time, time_separator));
ss = Num(Word(3, time, time_separator));
date_time = Date DMY(d, m, y) + hh * 60 * 60 + mm * 60 + ss;
AsDate(date_time);
回复:Informat (ParseDate) 函数与时间似乎在 Jmp 15.2 Informat 中只是忽略了像这样的奇特模式
datetime= Informat( str, "yyyy-mm-dd HH:mm:ss" );
即使pattern =“hello”也会导致

在以后的版本中,Jmp会告诉用户:
未知格式:你好
什么有效:
使用格式模式选项提供信息:
<HH><:><MM> <:><SS> “ ); 显示(类型(日期时间)); 显示(日期时间);</SS></MM></HH>str="2022-10-22 16:25:37";
datetime= Informat( str, "Format Pattern", "<YYYY><MM></MM></YYYY>