2015-08-25 3 views
0

Предположит, есть событие, которое создает в стране А, и TimeString является "2015-08-27T16:00:32+02:00" Людей (я) хотят видеть время мероприятия, но не по моему местному ГРИНВИЧУ, позволяю сказать, шахта +05:00 .. Я хочу, чтобы показать пользователю создателя часовых поясов т.е.Показать дату в соответствии с ним создали часовой пояс - JavaScript

2015-08-27T16:00:32+02:00 

Короче говоря, время, показанное должно быть 4:00PM (according to +02:00), не 7:00PM (according to +05:00)

есть какое-либо решение, используя нативный JavaScript Object Дата или момент .js?

+0

Возможно, вы должны использовать время в UTC. И добавление часового пояса зависит от пользователя. Будьте осторожны с DTS. http://stackoverflow.com/questions/5590429/calculating-daylight-savings-time-from-only-date –

+0

Да, я действительно беспокоюсь о DTS. Есть ли альтернатива, которую я мог бы использовать, возможно? – AhsanAyaz

ответ

0

Вы должны сохранить в своей базе данных дату и часовой пояс создателя. Затем, когда вы должны показать им, что вы можете сделать что-то вроде:

$(document).ready(function() { 
 
    moment.tz.add('America/Los_Angeles|PST PDT|80 70|0101|1Lzm0 1zb0 Op0'); 
 
    
 
    var date = moment('2015-08-27T16:00:32+02:00'); // Get date from db 
 
    $('#date').html(date.format('LLLL')); // Display date using the browser's timezone 
 
    var timezone = 'America/Los_Angeles';// Get timezone from db 
 
    $('#newDate').html(date.clone().tz(timezone).format('LLLL')); // Clone the date, set the new timezone and display 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.10.6/moment.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.4.0/moment-timezone.min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<pre id="date"></pre> 
 
<pre id="newDate"></pre>

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

Затем вы получаете часовой пояс из базы данных, вы устанавливаете новый часовой пояс, и вы можете видеть, что даты изменяются в нижнем поле.

Очевидно, что этот пример работает, только если вы не находитесь в America/Los_Angeles часовой пояс. В этом случае вы должны получить две равные строки, что на самом деле правильное поведение, но это не позволит вам увидеть action_timezone в действии.

Смежные вопросы