西班牙
斯潘4
我正在访问返回日期/时间属性的web服务(旧时)采用以下历元/时区格式:1352984400000+1100.格式是毫秒+小时.
我已成功创建以下工作流:亚搏在线
1)使用“+”分割属性
2)公开列表{0}和列表{1}值
3)创建新属性以保持毫秒到秒环氧氯丙烷:@Evaluate(@Value(@list{0})*0.001)
4)创建新属性以保持时区小时到秒的调用时区:@div(@Value(@list{1})*60*60100)
5)创建名为新时间这是环氧氯丙烷和时区.新时间现在包含以秒为单位的纪元时间。
6)最后,将新时间使用输入格式将属性放入DateTimeConverter中:%s$
7条)新时间将保留值2012111.16亿-%Y%m%d%H%m%S中的正确时间
不过,如果我能在最初的时候旧时属性转换为具有以下输入格式的DateTimeConverter转换器:% s + % H
是否可以使用DateTimeConverter来转换epoch时间(+时区),而不需要分割属性或预先操作属性?
谢谢,
FME不支持毫秒时间格式,但在FME 2017.1+中提供了有用的功能,使日期/时间操作与其他功能结合起来更容易。例如,此AttributeCreator创建NewTime=“20121151130000+11:00”。
如有必要,您可以添加另一个表达式,用@TimeZoneSet函数将NewTime(时区=+11:00)转换为UTC时间,并用@TimeZoneRemove函数删除时区后缀。
@TimeZoneRemove(@TimeZoneSet(@Value(NewTime),utc))
请参阅这些页面以了解有关函数的更多信息。
注意:如果原始值由从纪元开始经过的毫秒数和时区后缀(+1100)组成,则示例“1352984400000+1100”应为“20121115020000+00:00”。我不知道为什么这里的“20121116000000”是正确的。
2012-11-16就是+ 00:00你可以在网上用时区计算器查一下。 时区计算器
2012-11-15 13:00:00-11:00
2012-11-16 11:00:00 + 11点
var日期=新日期(1352984400000+1100);console.log(日期)“2012年11月16日星期五00:00:01 GMT+1100(澳大利亚东部夏令时)”
在python中很容易做到:
从datetime导入datetime,timedelta导入time#oldtime=“1352984400000+1100”oldtime=feature.getAttribute('oldtime')#拆分为列表timebits=oldtime.Split(“+”)#转换为秒>>其小数点epoch=int(timebits[0])/1000#从epoch timestamp dt=2012-11-15 13:00:00转换为python日期时间格式dt=datetime.utcfromtimestamp(epoch)Š使用timedelta NewTime=dt+timedelta(hours=int(timebits[1])将小时添加到datetimeŠ创建新属性NewTime,格式为%Y%m%d%H%m%S NewTime=2012-12-31 09:00:00 feature.setAttribute('NewTime',NewTime.strftime(“%Y%m%d%H%m%S”))
NewTime = dt+ timedelta(hours=int(timebits[1][:2]), minutes =int(timebits[1][2:]))
?2019安全亚搏在线软件公司|合法的