你好,
我有一个数据集以这种格式报告一个单元格内的日期和时间:“12.08.2022 15:46:43 GMT-0700”(日期格式为 dd.mm.yyyy)。我想为日期创建一列,为时间创建一列(我假设时间是当地时间,而 GMT-0700 只是表示这是当地时间。 所以对于每个单元格,我想要两列:
第 1 列:日期格式:dd.mm.yyyy
第 2 列:时间格式 15:46:43
我尝试过的不同方法似乎不太奏效,我想知道这是否是由于月/日/年值之间的时间段所致?
谢谢,
罗伯特
使用 JMP 16。
如果你到了你的本地假设不正确的地步。将时间放在 UTC 中可能是值得的。
Names default to here(1);
dt = New Table( "Untitled", Add Rows( 1 ),
New Column( "stamp", Character, "Nominal", Set Values( {
"12.08.2022 15:46:43 GMT-0700",
"14.08.2022 15:46:43 GMT-0730" // just to show half hour time zones
} ) )
);
dt << New Column("DT UTC", Format( "yyyy-mm-ddThh:mm:ss" ), formula(
timezone_offset = Num( Substr( :stamp, 24, 3 ) ) + Num( Substr( :stamp, 27, 2 ) ) / 60; // get the timezone offset
Informat( Substr( :stamp, 1, 19 ), "d/m/y H:m:s" ) - timezone_offset * 3600; // turn from local to UTC
));谢谢克雷奇。 这完全有效。 你说得对,现在我确实想在一个单元格中显示时间和日期。
dt = New Table( "Untitled", Add Rows( 1 ), New Column( "stamp", Character, "Nominal", Set Values( {"12.08.2022 15:46:43 GMT-0700"} ) ) );
dt << New Column( "time", Format( "H:m:s" ), formula( Informat( Substr( stamp, 12, 8 ), "h:m:s" ) ) );
dt << New Column( "date", Format( "d/m/y" ), formula( Informat( Substr( stamp, 1, 10 ), "d/m/y" ) ) );
dt << New Column( "datetime1", Format( "d/m/y H:m:s" ), formula( Informat( Substr( stamp, 1, 19 ), "d/m/y H:m:s" ) ) );
dt << New Column( "datetime2", Format( "yyyy-mm-ddThh:mm:ss" ), formula( Informat( Substr( stamp, 1, 19 ), "d/m/y H:m:s" ) ) );
Column formulas extract dates, times, and datetimes.Column formulas extract dates, times, and datetimes.列公式提取日期、时间和日期时间。
通常您需要一个日期时间列,而不是单独的日期和时间列。
编辑:我不确定格式记录在哪里;我制作了一个小型数据表,使用列属性来选择/测试格式,然后将表脚本保存到脚本窗口以获取格式名称。