如何在具有不同时区的javascript中更改日期

如何在具有不同时区的javascript中更改日期,javascript,php,date,datetime,timestamp-with-timezone,Javascript,Php,Date,Datetime,Timestamp With Timezone,我正在用unix时间戳在数据库中保存日期。我已将时区默认设置为: date_default_timezone_set("America/Los_Angeles"); 但在javascript中,我用以下方式更改时间戳: for (var i = 0; i < records.length; i++) { if (originalData[i].SystemLogsUserAction.TimeStamp == "0") { records[i].TimeStamp

我正在用unix时间戳在数据库中保存日期。我已将时区默认设置为:

date_default_timezone_set("America/Los_Angeles");
但在javascript中,我用以下方式更改时间戳:

for (var i = 0; i < records.length; i++) {
    if (originalData[i].SystemLogsUserAction.TimeStamp == "0") {
        records[i].TimeStamp = "";
    } else {
        records[i].TimeStamp = new Date(originalData[i].SystemLogsUserAction.TimeStamp * 1000);
    }
}
return records;
for(var i=0;i
上面的代码更改了时间,但它不在我提到的时区内。

不知羞耻地从以下位置盗走:

此函数可通过提供城市/国家名称和偏移值来计算时区值


<函数>通过提供城市/国家的名称和偏移值

来计算时区值是有用的,如果你在处理时区,你可能想考虑存储UTC时间和时区偏移量。我完全同意罗恩,尝试在UTC时间中存储时间,这在转换它们时更容易。您可以确保数据库中存储的所有时间都具有相同的时区。我在core.php文件中存储了时区,如:-date\u default\u timezone\u set(“America/Los\u Angeles”);如果你不想遇到问题,请从头开始干净地设计你的应用程序。让您的服务器时区为UTC。将数据库配置为UTC。仅存储UTC时间戳(
分区时间戳-timedelta=UTC时间戳
)。显示时从UTC转换为用户TZ(
UTC时间戳+timedelta=分区时间戳
)。如果你从一开始就做得很干净,你就不会遇到问题了。我没有得到你想要我做的事情。如果你在处理时区,你可能想考虑存储UTC时间和时区偏移。我完全同意罗恩,试着把时间存储在UTC时间里,这在转换它们之间比较容易。您可以确保数据库中存储的所有时间都具有相同的时区。我在core.php文件中存储了时区,如:-date\u default\u timezone\u set(“America/Los\u Angeles”);如果你不想遇到问题,请从头开始干净地设计你的应用程序。让您的服务器时区为UTC。将数据库配置为UTC。仅存储UTC时间戳(
分区时间戳-timedelta=UTC时间戳
)。显示时从UTC转换为用户TZ(
UTC时间戳+timedelta=分区时间戳
)。如果你从一开始就干净利落地做这件事,你就不会那么容易遇到问题。。
// function to calculate local time
// in a different city
// given the city's UTC offset
function calcTime(city, offset) {

    // create Date object for current location
    d = new Date();

    // convert to msec
    // add local time zone offset
    // get UTC time in msec
    utc = d.getTime() + (d.getTimezoneOffset() * 60000);

    // create new Date object for different city
    // using supplied offset
    nd = new Date(utc + (3600000*offset));

    // return time as a string
    return "The local time in " + city + " is " + nd.toLocaleString();

}