javascript中的For循环转换时间

For loop in javascript to convert times

本文关键字:转换 时间 循环 For 中的 javascript      更新时间:2023-09-26

我有以下数组:

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;
}