将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL你好,
我在转换值时遇到问题,例如
08:49:46 下午
上午 10:30:46
从字符列到数字 h:m:s 24 小时格式。
我想在没有 JSL 的情况下运行转换,并且不依赖于操作系统时间格式。
请协助。
问候,
汤姆.
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL该公式在某些条件下失败:
时间_1: 6/16/2022 11:20:49 上午
时间_2: 6/16/2022 12:45:13 PM
如果我们考虑 Time_1,我们将获得 --> 6/16/2022 11:20:49
但是,如果我们考虑 Time_2,我们将获得 --> 7/16/2022 00:45:13 (切换到错误的日期)。
有没有一种简单的方法可以将 Time_1 或 Time_2 这样的时间戳转换为连续的数字而不是字符串?
问候斯文
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL@汤姆_阿布拉莫夫,
你有一个解决方案@多发性硬化症回复。然而,我们要么有非常不同的 JMP 版本,要么我们沟通得不好,所以这是一个仅供参考的回复。
您的屏幕截图显示了名义模型,但仅显示了时间 08:49:46 PM。如果此列是数字,而不是字符信息()将返回一个空值,因为它的参数必须是字符串/字符。因此,指定您的数据是数字还是字符,并/或附上示例数据表非常重要。
如果您的传入列是日期时间列,只是格式化为时间并且是数字,我建议您使用函数/公式创建一个新列一天中的时间(第 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 列的数据类型是什么? 我可以看到建模类型是名义上的。 如果第 1 列是数字和名义值,则 Informat 返回空 ()。
如果该列已经是数字,只需将第 1 列的格式更改为持续时间。
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL谢谢你,
我正在使用 JMP 14 Pro。
仍然缺少值 - 请参阅随附的屏幕截图。
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL您使用的是哪个版本的 JMP? 有一个版本无法进行就地转换。
我建议您创建一个新列,并使用函数 Informat( Trim(your_char_column), "h:m:s")。 这应该返回数字,然后将该列的格式更改为持续时间 > 小时:分:秒。 这修剪()函数将删除空格和其他不可打印的字符。 我希望这有效。
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL谢谢您,但不幸的是,在您提到的更改后我得到了缺失值......
回复:将 AM/PM 时间文本转换为 24 小时时间格式 - 无 JSL如果您的专栏是字符,那么您可以通过点击来完成此操作。 右键单击该列并执行所有这些步骤,然后按“确定”
- 选择数据类型 > 数字,
- 建模类型>连续,
- 格式 > 持续时间 > 小时:分:秒
如果您不想让当前列面临风险,请创建一个连续的数字新列,并使用公式 Informat( char_column, "hr:m:s")。 然后将格式更改为持续时间。