将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL你好,
我在转换值时遇到问题,例如
晚上 8 点 49 分 46 秒
上午 10:30:46
从字符列到数字 h:m:s 24h 格式。
我想在没有 JSL 且不依赖于操作系统时间格式的情况下运行转换。
请协助。
问候,
汤姆。
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL@tom_abramov ,
你有一个解决方案@小姐回复。但是,我们要么有非常不同的 JMP 版本,要么沟通不畅,所以这是一个仅供参考的回应。
您的屏幕截图显示了名义建模,但仅显示了时间,晚上 8:49:46。如果此列是数字,而不是字符,则信息()将返回一个空,因为它的参数需要是一个字符串/字符。因此,重要的是指定您的数据是数字还是字符,或者附上示例数据表。
如果您的传入列是一个 DateTime 列,只是格式化为时间并且它是数字,我建议您使用函数/公式创建一个新列时间(第 1 栏)然后将该新列格式化为持续时间。即使一列被格式化为时间,如果我想找到说第 1 行和第 2 行之间的时间,并且 DateTime 列只是格式化为时间,它将包括天数,基础数据仍然是日期时间。
从主菜单中,选择帮助 > 脚本索引 > 函数 > 日期时间,您可以运行示例脚本来查看每个函数的工作方式,无论其参数是字符串还是数字。这是了解更多信息的简单方法。 供参考
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL谢谢,公式没问题。
可能没有公式就没有办法...回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL这可能是导致它失败的“PM”。 信息()如果只使用字符串的时间部分应该可以工作,例如使用剩下() AM/PM 的功能和条件正确。
试试这个公式:
Informat(Left(:Column 1, 8), "h:m:s") + If(Contains(:Column 1, "AM"), 0, In Hours(12))
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL第 1 列的数据类型是什么? 我可以看到建模类型是标称的。 如果 Column 1 是 Numeric 和 Nominal,则 Informat 返回一个 empty()。
如果列已经是数字,只需将列 1 的格式更改为持续时间。
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL谢谢,
我正在使用 JMP 14 Pro。
仍然缺少值 - 请参阅随附的屏幕截图。
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL您使用的是哪个版本的 JMP? 有一个版本无法进行适当的转换。
我建议您创建一个新列,并使用函数 Informat(Trim(your_char_column), "h:m:s")。 这应该返回数字,然后将该列的格式更改为 Duration > hr:m:s。 这修剪()函数将删除空格和其他不可打印的字符。 我希望这行得通。
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL谢谢,但不幸的是,在您提到的更改后,我得到了缺失值...
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL如果您的列是字符,那么您可以通过单击来执行此操作。 右键单击列并执行所有这些步骤,然后按 OK
- 选择数据类型 > 数字,
- 建模类型 > 连续,
- 格式 > 持续时间 > hr:m:s
如果您不想冒当前列的风险,请创建一个数字且连续的新列,并使用公式 Informat(char_column, "hr:m:s")。 然后将格式更改为持续时间。