.Net时间串转换在Coldfusion中

时间:2019-01-26 20:18:14

标签: .net coldfusion coldfusion-11

我有一个来自.NET的六位数时间字符串,我想转换为ColdFusion中的时间戳。转换它的正确方法是什么?

string= 20190126195631

日期很简单:

thisDate = '#mid(string,5,2)#/#mid(string,7,2)#/#mid(string,1,4)#'

为了获得我尝试过的时间:

timestamp = timeFormat(parseDateTime(mid(string,9,6)),'HH:mm')

如何使用195631显示时间戳记?

3 个答案:

答案 0 :(得分:4)

(评论太久了...)

  

time ='#mid(string,9,2) -8#

不要仅从小时中减去8,因为当UTC值在午夜到7AM之间时,它将返回无效的值,例如“ -1” AM或“ -8” AM。

此外,如果要将值转换为本地时间,请不要忘记夏令时的更改。 8小时的偏移量可能会更改为7小时,具体取决于一年中的时间和时区。不用使用硬编码数字,而是使用DateConvert函数将UTC转换为本地时间,并使用ParseDateTime带掩码而不是多个字符串函数。

请记住,根据建议的CF版本,所有建议的方法都有优点,缺点和可悲的潜在错误/陷阱..。因此,请务必使用各种日期值和时区进行测试。

ColdFusion 2016+语法(请注意,使用“ nn”表示分钟。Runnable Example

str = "20190126175631";
utcDate = parseDateTime(str, "yyyyMMddHHnnss");
localDate = DateConvert("utc2Local", utcDate);

writeOutput("utcDate ="& utcDate &" localDate = "& localDate);

ColdFusion 10/11语法(请注意,使用“ mm”表示分钟。Runnable Example

str = "20190126175631";
utcDate = parseDateTime(str, "yyyyMMddHHmmss");
localDate = DateConvert("utc2Local", utcDate);

writeOutput("utcDate ="& utcDate &" localDate = "& localDate);

答案 1 :(得分:2)

谢谢!您的评论使我意识到时间很简单:HHMMSS 19 =下午7点,56分31秒。

让我失望的是格林尼治标准时间(对我而言是-8个小时)轮班。 答案是:

email -  : 65279
surveyLink - s : 115
name - n : 110
undefined
email -  : 65279
surveyLink - s : 115
name - n : 110
undefined
email -  : 65279
surveyLink - s : 115
name - n : 110
undefined

答案 2 :(得分:2)

我在这里可能会发疯,但是看起来字符串可以像这样分割:

2019-01-26 19:56:31

因此,使用Coldfusion:


<cfset datetimestring = "20190126195631">

<cfset year = Mid(datetimestring,1,4)>
<cfset month = Val(Mid(datetimestring,5,2))>
<cfset day = Val(Mid(datetimestring,7,2))>
<cfset hour = Val(Mid(datetimestring,9,2))>
<cfset minute = Val(Mid(datetimestring,11,2))>
<cfset second = Val(Mid(datetimestring,13,2))>


<cfset dateTime = CreateDateTime(year,month,day,hour,minute,second)>

<cfset dateTimeOffset = DateAdd("h", -8, dateTime)>

<cfoutput>
#dateTimeOffset#
</cfoutput>

是的,我说过这个字符串可能只是一个纪元时间戳,但它看起来确实像“日期时间”模式吗?