Преобразование строки времени .Net в Coldfusion - PullRequest
0 голосов
/ 26 января 2019

У меня есть шестизначная временная строка из .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 голосов
/ 27 января 2019

Я мог бы сойти с ума здесь, но похоже, что строка может быть разделена следующим образом:

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>

Как я уже говорил, эта строка может быть просто отметкой времени эпохи, но она выглядит как шаблон даты и времени?

0 голосов
/ 27 января 2019

(слишком долго для комментариев ...)

time = '#mid (строка, 9,2) -8 #

Не просто вычитайте 8 из часа, потому что он вернет недопустимые значения, такие как «-1» AM или «-8» AM, когда значение UTC находится между полуночью и 7:00.

Кроме того, если вы переводите значение в местное время, не забывайте об изменениях летнего времени. Смещение 8 часов может измениться до 7 часов, в зависимости от времени года и зоны. Вместо использования жестко закодированного числа взгляните на функцию DateConvert для преобразования UTC в местное время и используйте ParseDateTime с маской вместо нескольких строковых функций.

Имейте в виду, что есть плюсы, минусы ... и, к сожалению, потенциальные ошибки / ошибки ... со всеми предлагаемыми подходами, в зависимости от вашей версии CF. Поэтому не забудьте протестировать с различными значениями даты и часовых поясов.

Синтаксис ColdFusion 2016+ (Примечание: в течение нескольких минут используется "nn". Пример выполнения )

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

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

Синтаксис ColdFusion 10/11 (Примечание: в течение нескольких минут используется "мм". Пример выполнения )

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

writeOutput("utcDate ="& utcDate &" localDate = "& localDate);
0 голосов
/ 27 января 2019

Спасибо!Ваши комментарии помогли мне понять, что время просто: ЧЧММСС 19 = 7 вечера, 56 минут и 31 секунда.

То, что меня оттолкнуло, это смена по Гринвичу (-8 часов для меня).Итак, ответ:

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