将军事时间格式 (hhmm) 转换为时间格式 (hh:mm)<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我需要将 hhmm 格式的军事时间(例如 1432 或 725)转换为 hh:mm 格式,例如 14:32 到 7:25。是否有一个简单的公式可以进行转换,或者我应该使用脚本吗?谢谢。
回复:将军事时间格式 (hhhh) 转换为时间格式 (hh:mm)有用! 太感谢了。 通过查看您提出的公式,我学到了很多东西!回复:将军事时间格式 (hhhh) 转换为时间格式 (hh:mm)我的第一个问题是,如果输入时间值的长度小于 4 个字符,是否应该假设军事时间左侧缺少零 (0)?如果是这种情况,我提出以下解决方案;它用前导零填充值,然后执行转换。
standard = Substr( "00", Length( Char( :Military ) ) - 1 ) ||
Char( :Military );
Num( Substr( Char( :standard ), -2 ) ) * 60
+Num(
Substr(
Char( :standard ),
1,
(Length( Char( :standard ) ) - 2)
)
) * 3600;
回复:将军事时间格式 (hhhh) 转换为时间格式 (hh:mm)我试图使用此代码将字符串转换为时间格式 (hh:mm)
Num( Substr( Char( :Military ), -2 ) ) * 60 + Num(
Substr( Char( :Military ), 1, (Length( Char( :Military ) ) - 2) )
) * 3600
但是,我意识到如果字符串只有 2 位数字,它就不会被转换。 例如,如果它是 26,则不会转换为 12:26am。 但是,一个 3 位数字的字符串可以正常工作(100 变为凌晨 1:00)
怎么会这样?回复:将军事时间格式 (hhhh) 转换为时间格式 (hh:mm)我将您的代码发布到新字段的公式部分,将该字段更改为我的数据集列名称,并且效果很好!
Num( Substr( Char( :Military ), -2 ) ) * 60 + Num(
Substr( Char( :Military ), 1, (Length( Char( :Military ) ) - 2) )
) * 3600
太感谢了!
回复:将军事时间格式 (hhhh) 转换为时间格式 (hh:mm)嗨,吉姆,
我如何使用这个脚本? 我需要更改哪些变量?
然后数据集的名称是“transaction_data”,驻留军事时间的列的名称是“DAY”(transaction_data:DAY)
那么,我应该如何将这两个变量替换到您的脚本中并运行呢?
抱歉这样的菜鸟问题。
回复:将军事时间格式 (hhhh) 转换为时间格式 (hh:mm)从军事时间转换为常规时间怎么样?
回复:将军事时间格式 (hhhh) 转换为时间格式 (hh:mm)另一种完全避免字符串的方法:
dt << New Column( "time",
Numeric,
"Continuous",
Format( "hr:m", 12 ),
Formula( Floor( :Military / 100 ) * 3600 + Mod( :Military, 100 ) * 60 )
);
回复:将军事时间格式 (hhmm) 转换为时间格式 (hh:mm)吉姆,您的解决方案非常有效。 我喜欢一切都保持数字形式。 非常感谢!
回复:将军事时间格式 (hhmm) 转换为时间格式 (hh:mm)拜伦,非常感谢您的指导。您提出的方法有效;但是,它将变量保持在字符状态。
我已保存您的脚本以备将来使用!
回复:将军事时间格式 (hhhh) 转换为时间格式 (hh:mm)这是做 Bryon 所展示的同一件事的不同方法。我的版本直接转到数字时间值,而不是创建一个字符值然后输入。
名字默认到这里( 1个) ;
// 创建一个包含一些军事时间的样本数据表.....
// 该列可以是数字或字符...转换
// 公式同时处理
dt =新表( 《无题3》 ,添加行( 2个) ,新建专栏( “军队” ,数字, “连续的” ,格式( “最好的” , 12 ) ,设置值( [ 1421 , 923 ] ) ) ) ;
// wait() 函数只是为了增加戏剧效果 
等待( 2个) ;
// 添加一个新列来保存转换后的时间
// 使用时间格式,因为转换将创建
// 一个值,它是自午夜以来的秒数
dt <<新建专栏( “时间” ,数字, “连续的” ,格式( “小时:米” , 12 ) ) ;
等待( 2个) ;
// 遍历所有行并进行转换
// 该公式将作为列公式使用,只需删除
// “:时间=”
对于每一行(
:时间=数量(子字符串(字符( :军队) , - 2个) ) * 60 +
数量(子字符串(字符( :军队) , 1个, (长度(字符( :军队) ) - 2个) ) ) * 3600
) ;
回复:将军事时间格式 (hhhh) 转换为时间格式 (hh:mm)可能有一种更简单的方法可以做到这一点;但是,这很有效。
步骤1
重复(“0”,4 - 长度(字符(:开始)))||字符(:开始)
将起始数字变成用零填充的 4 位字符(这对于邮政编码也很方便)
第2步
左(:第 1、2 步)|| “:”||右( :Step 1, 2 )
在小时和分钟之间插入一个冒号
步骤 3
格式( Informat( :Char 24 hr Time, "h:m" ), "h:m" )
此公式将字符 24 小时制转换为午夜后的秒数,然后将秒数转换为 12 小时制。
Informat 评估一个字符串并返回一个数字
format 计算一个数字字符串并返回一个字符
| 开始 |
步骤1 |
第2步 |
步骤 3 |
| 3个 |
0003 |
00:03 |
上午 12:03 |
| 30 |
0030 |
00:30 |
上午 12:30 |
| 1130 |
1130 |
11:30 |
上午 11:30 |
| 1830 |
1830 |
18:30 |
下午6:30 |
…………
或者你可以用一个公式在一个“简单”的步骤中完成这一切
Format(
Informat(
Left( Repeat( "0", 4 - Length( Char( :Start ) ) ) || Char( :Start ), 2 ) || ":" ||
Right( Repeat( "0", 4 - Length( Char( :Start ) ) ) || Char( :Start ), 2 ),
"h:m"
),
"h:m"
);
我收集了一系列激烈的公式,这些公式可以在特殊情况下回收。