Coldfusion convert from UNIX to human readable time without converting the time between the time zones
我需要从UNIX到人类可读时间的转换,但我不想像下面的代码那样转换时区之间的时间:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <cffunction name="EpochToDate" hint="Returns Epoch from Date"> <cfargument name="dateSeconds" default=""> <cfscript> // set the base time from when epoch time starts startDate = createdatetime( '1970','01','01','00','00','00' ); if ( NOT isnumeric( arguments.dateSeconds ) ) return ''; // return the date // this adds the seconds to the startDate and the converts it to to a local time from UTC format return dateConvert("utc2Local", dateadd( 's', arguments.dateSeconds, startDate ) ); </cfscript> </cffunction> |
例如,时间戳1532118000应返回GMT:2018年7月20日星期五晚上8:20:00而不是服务器的时区日期。
我认为你需要的方法是先将纪元时间从UTC转换为本地,然后对其进行操作。 完成后,您可以将其转换回UTC时间。 我在两个服务器上试过这个,一个是UTC的前向时区,另一个是后面的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <cffunction name="EpochToDate" hint="Returns Epoch from Date" output="true"> <cfargument name="dateSeconds" default=""> <cfscript> // set the base time from when epoch time starts startDate = DateConvert("utc2Local", CreateDateTime( 1970,1,1,0,0,0 )); writedump(startDate); if ( NOT isnumeric( arguments.dateSeconds ) ) return ''; // return the date // this adds the seconds to the startDate and the converts it to to a local time from UTC format return DateConvert("local2Utc", dateadd( 's', arguments.dateSeconds, startDate )); </cfscript> </cffunction> <cfdump var="#EpochToDate(1532118000)#"> |
DEMO
UTC +5:30
UTC -7:00