带时间的 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";
类型(日期时间)=“日期”;
日期时间 = 2022 年 10 月 22 日:16:23:37;
或区域格式芬兰语(芬兰):
str = "2022-10-22 16:23:37";
类型(日期时间)=“数字”;
日期时间 = .;
有没有可以解析时间的函数? 或者有没有建议如何做到这一点?
脚本视窗回复:带时间的 Informat (ParseDate) 函数检查使用 << Use Locale() 是否有帮助。
在 JMP16 之前,JMP 在管理时间(和日期)方面相当糟糕。 我很可能会将字符串解析为年、月、日、小时、分钟和秒。 然后将这些相加得到 date_time。 使用 JMP16,您很可能只使用格式模式
也许这可以提供一些想法:
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)函数与时间这是处理问题的一种方法
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)函数与时间我用过<< 使用 Locale() 来克服日期和时间格式的问题。 您提供的示例没有解决问题,我想我稍后会在有时间(双关语)时回到这个问题。 该示例的问题很可能通过 << Use Locale() 解决。如果我得到更新版本的 JMP,我也会尝试格式化模式。
再次感谢分享您的知识。