Time 如何从APL中的秒数创建时间字符串?
我想将午夜后的秒数转换为HH:MM:SS格式的字符串 例如,数字Time 如何从APL中的秒数创建时间字符串?,time,apl,Time,Apl,我想将午夜后的秒数转换为HH:MM:SS格式的字符串 例如,数字17672应该变成字符串'04:54:32'。我可以做数学运算得到整数分量,如下所示: T←17672 H←⌊T÷3600 MS←3600|T M←⌊MS÷60 S←60|T H M S 4 54 32 但我不知道如何将这个数组的三个组成部分连接成一个字符串(用冒号分隔),并在每个时间组成部分的左边填充一个零。例如,我想 6 0 8 将成为'06:00:08
17672
应该变成字符串'04:54:32'
。我可以做数学运算得到整数分量,如下所示:
T←17672
H←⌊T÷3600
MS←3600|T
M←⌊MS÷60
S←60|T
H M S
4 54 32
但我不知道如何将这个数组的三个组成部分连接成一个字符串(用冒号分隔),并在每个时间组成部分的左边填充一个零。例如,我想
6 0 8
将成为'06:00:08'
我可以使用GNU APL或联机第一步是使用“-函数改进计算:
24 60 60⊤17672
4 54 32
R←FormatSecs secs;a
a←,⍕3 1⍴60 60 60⊤secs
R←1↓,':',3 2⍴('0',a)[1+(⍳⍴a)×a≠' ']
要格式化这些数字并插入冒号,我通常使用⎕FMT
,这是一个供应商特定的函数,用于将数字格式化为字符串。在大多数APL中执行此操作的一般方法可能是:
a←,⍕3 1⍴24 60 60⊤17672
1↓,':',3 2⍴('0',a)[1+(⍳⍴a)×a≠' ']
04:54:32
最后,您可以将其放入函数中,而不是在会话中执行此操作:
R←FormatSecs secs;a
a←,⍕3 1⍴60 60 60⊤secs
R←1↓,':',3 2⍴('0',a)[1+(⍳⍴a)×a≠' ']
让我们测试一下:
FormatSecs 17672
04:54:32
完成任务;-) 第一步是使用“-”函数改进计算:
24 60 60⊤17672
4 54 32
R←FormatSecs secs;a
a←,⍕3 1⍴60 60 60⊤secs
R←1↓,':',3 2⍴('0',a)[1+(⍳⍴a)×a≠' ']
要格式化这些数字并插入冒号,我通常使用⎕FMT
,这是一个供应商特定的函数,用于将数字格式化为字符串。在大多数APL中执行此操作的一般方法可能是:
a←,⍕3 1⍴24 60 60⊤17672
1↓,':',3 2⍴('0',a)[1+(⍳⍴a)×a≠' ']
04:54:32
最后,您可以将其放入函数中,而不是在会话中执行此操作:
R←FormatSecs secs;a
a←,⍕3 1⍴60 60 60⊤secs
R←1↓,':',3 2⍴('0',a)[1+(⍳⍴a)×a≠' ']
让我们测试一下:
FormatSecs 17672
04:54:32
完成任务;-) 在扩展APL(所有现代APL)中,您可以使用
1↓∊':',¨¯2↑¨⍕¨100+24 60 60⊤T
ngn/apl有一个不合格的⍕代码>所以您需要
1↓∊':',¨¯2↑¨,¨⍕¨100+24 60 60⊤T
在Dyalog、GNU和ngn/apl中,您可以通过将其括在大括号中来生成dfn(lambda)。试试看
使用Dyalog APL 16.0版或更高版本,可以使用@
运算符放置冒号:
{1↓':'@4 7∊⍕¨100+24 60 60⊤⍵}
在扩展APL(所有现代APL)中,您可以使用
1↓∊':',¨¯2↑¨⍕¨100+24 60 60⊤T
ngn/apl有一个不合格的⍕代码>所以您需要
1↓∊':',¨¯2↑¨,¨⍕¨100+24 60 60⊤T
在Dyalog、GNU和ngn/apl中,您可以通过将其括在大括号中来生成dfn(lambda)。试试看
使用Dyalog APL 16.0版或更高版本,可以使用@
运算符放置冒号:
{1↓':'@4 7∊⍕¨100+24 60 60⊤⍵}
这里的东西很棒!我确实想要一个函数,我在这里生成了这个函数,但不幸的是,我的冒号之间有空格encode
非常棒。实际上,在结果中使用这些空格的原因是,您将数字保留为数字,并生成了一个异构结果,然后APL插入空格作为分隔符。您可以通过执行H来改进该代码←¯2↑'0',⍕ ⌊ ⍵ ÷3600
等。或者,R← 1.↓ , ':' , 0 1↓⍕(0 60 60 ⊤ 十)∘.+,这里真是太棒了!我确实想要一个函数,我在这里生成了这个函数,但不幸的是,我的冒号之间有空格encode
非常棒。实际上,在结果中使用这些空格的原因是,您将数字保留为数字,并生成了一个异构结果,然后APL插入空格作为分隔符。您可以通过执行H来改进该代码←¯2↑'0',⍕ ⌊ ⍵ ÷3600
等。或者,R← 1.↓ , ':' , 0 1↓⍕(0 60 60 ⊤ 十)∘.+,100