可以先用concat将整数连接成字符串,然后用temporalParse(别名datatimeParse)解析
yyyy=2022 MM=8 dd=25 HH=14 mm=50 ss=30 s = concat([yyyy, MM, dd, HH, mm, ss], "-") d = datetimeParse(s, "yyyy-MM-dd-HH-mm-ss")
可以先用concat将整数连接成字符串,然后用temporalParse(别名datatimeParse)解析
yyyy=2022 MM=8 dd=25 HH=14 mm=50 ss=30 s = concat([yyyy, MM, dd, HH, mm, ss], "-") d = datetimeParse(s, "yyyy-MM-dd-HH-mm-ss")
这里有两种方法实现,一种是如楼上所言concat将整数连接成字符串再解析(func1),一种是直接作为整形变量解析(func2)
yyyy=2022 MM=8 dd=25 HH=14 mm=50 ss=30 def func1(yyyy, MM, dd, HH, mm, ss){ return temporalParse(concat([yyyy, MM, dd, HH, mm, ss], "-"), "yyyy-MM-dd-HH-mm-ss") } def func2(yyyy, MM, dd, HH, mm, ss){ return datetime(date(month(yyyy*12)+MM-1)+dd-1)+HH*3600+mm*60+ss } timer func1(yyyy, MM, dd, HH, mm, ss) timer func2(yyyy, MM, dd, HH, mm, ss)
结果为:
Time elapsed: 0.078 ms
Time elapsed: 0.072 ms
此时二者性能差距不大。
如果是数据量很大的情况,即yyyy,MM,dd,HH,mm,ss分别为向量,此时func1不好处理向量,修改为func3
n = 10000000 yyyy=take(2022,n) MM=rand(1..12,n) dd=rand(1..28,n) HH=rand(24,n) mm=rand(60,n) ss=rand(60,n) def func3(yyyy, MM, dd, HH, mm, ss){ return temporalParse((string(yyyy)+"-"+string(MM)+"-"+string(dd)+"-"+string(HH)+"-"+string(mm)+"-"+string(ss)),"yyyy-MM-dd-HH-mm-ss") }
timer func2(yyyy, MM, dd, HH, mm, ss) timer func3(yyyy, MM, dd, HH, mm, ss)
Time elapsed: 203.697 ms
Time elapsed: 9571.486 ms