Datediff для даты и времени в разных часовых поясах

ОБНОВЛЕНО

Мне нужно получить разницу в часах и минутах между двумя датами, которые находятся в разных часовых поясах.

У меня есть дата и время в MySQL, и смещение от GMT мест в MySQL.

Что я пробовал:

<cfset departure = CreateDateTime(2017,01,27,21,00,00)> <!--- (this time zone is +2) --->
<cfset arrival = CreateDateTime(2017,01,28,06,40,00)> <!--- (this time zone is -5) --->
<cfset depart_timezone = 2>
<cfset arrive_timezone = -5>

<cfset difference = datediff("h",departure,arrival)><!--- get the difference in hours --->

<cfset timezonedif = depart_timezone - arrive_timezone><!--- get the difference between the time zones (answer should be 7)--->
<cfset duration = difference + timezonedif><!--- add the time zone difference to the flight difference --->

<cfoutput>          
(Duration: #duration# hours)<br>
</cfoutput> 

Это возвращает 16 часов, что не правильно. Разница должна быть 15 часов и 40 минут. Помощь будет оценена. Занимался этим часами.

1 ответ

Решение

Вы делаете вещи в неправильном порядке.

Вам нужно получить правильную дату / время - поэтому добавьте / удалите разницу часовых поясов

<cfset departure = CreateDateTime(2017,01,27,21,00,00)> <!--- (this time zone is +2) --->
<cfset arrival = CreateDateTime(2017,01,28,06,40,00)> <!--- (this time zone is -5) --->
<cfset depart_timezone = -2>
<cfset arrive_timezone = 5>

<cfset tzDeparture = DateAdd('h',depart_timezone,departure)>
<cfset tzArrival = DateAdd('h',arrive_timezone,arrival)>

Тогда получите общую сумму разницы в минутах

<cfset difference = datediff("n",tzDeparture,tzArrival)>

Затем просто сделайте математику, чтобы преобразовать минуты в часы и минуты

<cfoutput>    
    Duration Total Mins: #difference#<br>
    Duration Hours: #int(difference/60)#<br>
    Duration Mins: #difference MOD 60#<br>
</cfoutput>

Выход:

Продолжительность Всего минут: 1000

Продолжительность часов: 16

Продолжительность мин: 40

Вы можете увидеть пример здесь: http://trycf.com/gist/26f5bce31db7787f4591317b7360ceb7/acf11?theme=monokai

Другие вопросы по тегам