Mam zmienną o nazwie date1
, która zawiera obiekt daty/czasu ColdFusion wygenerowany przy użyciu parseDateTime
. Po zrzuceniu zmiennej otrzymuję {ts '2014-12-20 15:46:57'}
.dateDiff zwraca nieprawidłową wartość
Mam inną zmienną o nazwie date2
, która zawiera inny obiekt daty/czasu ColdFusion wygenerowany przez dateConvert("local2utc",now())
. Kiedy zrzucam zmienną, otrzymuję {ts '2014-12-20 15:49:40'}
.
Ale kiedy robię dateDiff("s",date1,date2)
otrzymuję -21436, który jest o wiele za dużo sekund. Czy ktoś może wyjaśnić, dlaczego tak się dzieje? Myślę, że to może być kwestia strefy czasowej, ale nie mogę się z tym pogodzić.
kod Repro
<cfset dtString = "Saturday, December 20, 2014 05:07:30 PM">
<cfset dtObject = parseDateTime(dtString)>
<cfdump var="#dtObject#">
<cfset utcNow = dateConvert("local2utc",now())>
<br><br><cfdump var="#utcNow#">
<br><br><cfdump var="#dateDiff("s",dtObject,utcNow)#">
Czy możesz opublikować repro case, aby skopiować kopię, aby odtworzyć problem? –
Nie, nie możemy komentować w ten czy inny sposób, nie widząc przypadku repro, który demonstruje to, co widzisz. Pls przeczytają to i są powiązane z dokumentami: http://blog.adamcameron.me/2013/09/shortself-contained-correct-compilable.html –
Podejrzewam, że jesteś w TZ czyli UTC-6? Jeśli zgłosisz do Google bazę błędów CF (https://www.google.co.uk/search?q=bugbase.adobe.com+dateConvert), pojawiło się kilka problemów z funkcją dateConvert(), które wydają się być w tym samym czasie tego, co widzisz. Adobe twierdzi, że je naprawił, ale nigdy nie byłbym z nich tak pewny. Podejrzewam, że twoja pierwsza randka jest w twojej lokalnej TZ, a druga w UTC, więc otrzymujesz to przesunięcie odzwierciedlone w wynikach dateAdd(). Dlaczego nie widzisz diff TZ w ''? Dunno. Nie zaskakuje mnie jednak. –