2013-07-11 4 views
0

У меня есть следующие данные:Преобразовать время UTC в определенной зоне

вар CURRENTTIME: 2013-07-11 15: 55: 36 + 00: 00 вар currentTimezone: Африка/Asmera

Мне нужен способ конвертировать currentTime в UTC в новое время, основанное на currentTimezone.

Я посмотрел в Timezone.js и у меня возникают проблемы, реализующий его (направления на сайте немного неоднозначным)

Код для функции Я намеревающегося на использовании включен. Спасибо :)

<script> 

    $("#storeTime").click(function(){ 
     storeCurrentTime(); 
    }) 

    $("#getTime").click(function(){ 
     retrieveTime(); 
    }) 

    $("#storeTimezone").click(function(){ 
     var yourTimezone = $('#timezone-select').find(":selected").text(); 
     tz = yourTimezone.toString(); 
     storeCurrentTimezone(tz); 
    }) 

    $("#convertTime").click(function(){ 
     //get the most recent UTC time, clean it up 
     var currentTime = $('#RetrievedTime').html(); 
     currentTime = currentTime.split(": ")[1]; 
     $('#convertedTime').html("Converted Time: " + currentTime);  

     //get the saved timezone 
     var currentTimezone = $('#storedTimezone').html(); 

    }) 
</script> 

ответ

0

Вам нужно знать смещение временной зоны, поэтому какой-то словарь со строками в числа.

// assuming your dictionary says 3 hours is the difference just for example. 
var timezoneDiff = 3; 

Тогда вы можете просто сделать новое время как этого

// Assuming you have the proper Date string format in your date field. 
var currentDate = new Date(currentTime); 
// Then just simply make a new date. 
var newDate = new Date(currentDate.getTime() + 60 * 1000 * timezoneDiff); 

Update

Я написал яваскрипт помощник для этого, которые вы можете найти по адресу: http://heuuuuth.com/projects/OlsonTZConverter.js

Я вытащил данные часового пояса со страницы wikipedia https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

Использование приведенного ниже экземпляра сценария.

var offset = OlsonTZConverter.GetUTCOffset("Africa/Asmera"); 

или если есть Daylight Savings в действие:

var offset = OlsonTZConverter.GetUTCOffset("Africa/Asmera",true); 

Это отбросит, если вы передаете неверный часовой пояс, но вы можете проверить, если часовой пояс действует с:

var isValid = OlsonTZConverter.Contains("Africa/Asmera"); 

или просто посмотреть на весь словарь с:

var tzDict = OlsonTZConverter.ListAllTimezones(); 

Надеюсь, это может спасти кого-нибудь некоторое время :).

+0

Хотя это опция, у меня есть список часовых поясов Олсона, но этот список не содержит никакой информации о смещении. Я надеялся найти способ сделать это, используя только строку часового пояса. –

+0

Было бы ужасно сделать такой словарь, если список будет * all * timezones, и я согласен с указаниями для Timezone.js. Я тоже не могу понять, для этого должна быть библиотека. – James

+0

I понимаете, что это довольно поздно, и вы, вероятно, уже что-то сделали, но я занят другими вещами. Я сделал небольшой класс помощников javascript для этого, так как я полагаю, что другие люди могут иметь такую ​​же проблему и не хотят прилагать усилия к тому, чтобы сделать словарь. Обновление выше с использованием. – James

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