我有以下数据:
var currentTime:2013-07-11 15:55:36 + 00:00 var currentTimezone:Africa / Asmera
我需要一种方法将UTC中的currentTime转换为基于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 :(得分: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);
<强>更新强>
我为此编写了一个javascript助手,您可以在以下位置找到: http://heuuuuth.com/projects/OlsonTZConverter.js
我从维基百科页面https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
中提取了时区数据一旦包含脚本,用法如下。
var offset = OlsonTZConverter.GetUTCOffset("Africa/Asmera");
或者如果有夏令时有效:
var offset = OlsonTZConverter.GetUTCOffset("Africa/Asmera",true);
如果您传递了无效的时区,则会抛出这些时区,但您可以检查时区是否有效:
var isValid = OlsonTZConverter.Contains("Africa/Asmera");
或者只看一下整个字典:
var tzDict = OlsonTZConverter.ListAllTimezones();
希望这可能会在某个时候节省一些时间:)。