javascript中的For循环转换时间
For loop in javascript to convert times
我有以下数组:
1366004070000,1,1366004406000,1
第一个和第三个条目是unix时间戳。我需要将其转换为本地日期时间。我该如何创建一个函数来完成这个任务呢?
这是我目前看到的非功能结构:
function toLocalTime(data) {
for (unixTime, successful in data) {
var d = new Date();
var tzOffset = d.getTimezoneOffset();
var new_time = unixTime - tzOffset
??
};
return newArray
}
我想生成一个与上面相同结构的数组,但将时间戳转换为本地时间,类似于:1366004070444,1,1366004406444,1
Update:以下答案中没有一个得到我正在寻找的格式的数据。我不是在寻找一个本地时间对象。我正在寻找一个数组,给我一个"调整unix时间戳"。换句话说,输出应该看起来与输入相同,除了从utc到localtime的时间略有调整。
您要求将数组时间转换为本地时间-所以这是正确答案(其余答案与今天比较)
http://jsfiddle.net/vWKYW/var times = [1366004070000,1,1366004406000,1];
var local_times = [];
for(var i=0;i<times.length;i++){
var time = times[i];
if(time != 1){
var d = new Date(time);
var tz = d.getTimezoneOffset();
var tz_ms = tz*60*1000;
time = d.getTime() - tz_ms;
}
local_times.push(time);
}
console.log(local_times);
你似乎想要这个:
var arr = [1366004070000,1,1366004406000,1];
for (var i=0; i<arr.length; i+=2) {
var unixTime = arr[i],
successful = arr[i+1];
var date = new Date(unixTime);
console.log(date.toString()); // local: Mon Apr 15 2013 07:34:30 GMT+0200
console.log(date.toUTCString()); // UTC: Mon, 15 Apr 2013 05:34:30 GMT
}
由于时间戳总是从UTC开始计数,因此您不需要转换任何内容。只需在Date
对象上使用非utc输出方法(如getHour()
而不是getUTCHour()
)。
虽然我不知道在JavaScript中如何处理"local-timezone adjusted时间戳",但下面是创建它们的代码:
function toLocalTime(data) {
var newArray = [];
for (var i=0; i<data.length; i+=2) {
var unixTime = data[i];
var d = new Date(data[i]);
var tzOffset = d.getTimezoneOffset() * 6e4;
newArray[i] = unixTime - tzOffset;
newArray[i+1] = data[i+1];
}
return newArray;
}
getTimezoneOffset
返回minutes,不返回milliseconds。
您可能需要使用常规的for循环:
var unixTimes = [1366004070000,1,1366004406000,1];
function toLocalTime(data) {
var localTimes = [];
for (var i = 0; i < data.length; i++) {
var d = new Date();
var tzOffset = d.getTimezoneOffset() * 60 * 1000; //To convert to ms
var new_time = data[i] - tzOffset;
localTimes.push(new_time);
};
return localTimes;
}
var newTimes = toLocalTime(unixTimes);
是这样的:
for(var i=0; i<data.length; i++) {
29 var d = new Date(parseInt(data[i][0]));
30 var tz = d.getTimezoneOffset();
31 var ms = tz * 60 * 1000;
32 data[i][0] = d.getTime() - ms;
33 //console.log(data[i][0]);
34 }
如果我理解正确的话(我不认为)你需要的是:
function toLocalTime(data) {
data[0] = getLocalTime(data[0]);
data[2] = getLocalTime(data[2]);
return data;
};
}
function getLocalTime(unixTime){
var d = new Date();
var tzOffset = d.getTimezoneOffset()*60000; // As @Bergi suggest :)
return unixTime - tzOffset;
}
相关文章:
- 将日期时间从json转换为可读格式
- 将日期和时间转换为UTC格式的日期-Javascript
- javascript/jquery将utc转换为短格式的本地时间
- 转换异常时间&Datestring到JavaScript日期
- 如何将datetime转换为以毫秒为单位的epoch时间javascript
- 将时间戳转换为java中的ISO860,
- 用JavaScript将ISO时间转换为H:MM am|pm
- 使用select选项转换时间.使用javascript
- 添加css转换时间以使用javascript切换类
- 在 UTC 和特定时区之间转换时间 - 新的国际化 API
- 转换时间中的日期,并使用javascript在其中添加30分钟
- 天气json转换时间Javascript时间戳
- 转换时间戳在UTC到用户本地时间javascript
- 需要使用momentjs转换时间到日期的帮助
- 转换时间字符串格式
- javascript中的For循环转换时间
- 如何转换时间戳并输入<输入类型="日期">
- 转换时间对象
- 如何使用jquery/javascript转换时间/日期
- Javascript转换时间戳