Javascript 如何使用时区将以毫秒为单位的时间转换为不同的本地时间
我需要使用node.js或JavaScript将以毫秒为单位的时间转换为特定的时区 我有一个unix时间“1497678894647”。我需要将其转换为PDT、MDT、CDT、EDT、MST、EST和IST本地时间 我有以下代码示例Javascript 如何使用时区将以毫秒为单位的时间转换为不同的本地时间,javascript,node.js,datetime,timezone,momentjs,Javascript,Node.js,Datetime,Timezone,Momentjs,我需要使用node.js或JavaScript将以毫秒为单位的时间转换为特定的时区 我有一个unix时间“1497678894647”。我需要将其转换为PDT、MDT、CDT、EDT、MST、EST和IST本地时间 我有以下代码示例 var timezoneJS = require('timezone-js'); var PDT = new timezoneJS.Date('1497680592200', 'America/New_York'); var MDT = new timezoneJ
var timezoneJS = require('timezone-js');
var PDT = new timezoneJS.Date('1497680592200', 'America/New_York');
var MDT = new timezoneJS.Date('1497680592200', 'America/Chihuahua');
var CDT = new timezoneJS.Date('1497680592200', 'America/Havana');
var EDT = new timezoneJS.Date('1497680592200', 'America/Detroit');
var MST = new timezoneJS.Date('1497680592200', 'America/Creston');
var IST = new timezoneJS.Date('1497680592200', 'Asia/Kolkata');
console.log("PDT --> ", dt);
console.log("MDT --> ", dt);
console.log("CDT --> ", dt);
console.log("EDT --> ", dt);
console.log("MST --> ", dt);
console.log("EST --> ", dt);
console.log("IST --> ", dt);
但我得到了这样的输出
{ _useCache: false,
_tzInfo: {},
_day: NaN,
year: NaN,
month: NaN,
date: NaN,
hours: NaN,
minutes: NaN,
seconds: NaN,
milliseconds: NaN,
timezone: 'America/New_York',
_dateProxy: Invalid Date,
_timeProxy: NaN }
{ _useCache: false,
_tzInfo: {},
_day: NaN,
year: NaN,
month: NaN,
date: NaN,
hours: NaN,
minutes: NaN,
seconds: NaN,
milliseconds: NaN,
timezone: 'America/Los_Angeles',
_dateProxy: Invalid Date,
_timeProxy: NaN }
PDT --> Sat Jun 17 2017 11:46:54
MDT --> Sat Jun 17 2017 11:24:54
CDT --> Sat Jun 17 2017 11:45:54
EDT --> Sat Jun 17 2017 11:12:54
MST --> Sat Jun 17 2017 11:33:54
EST --> Sat Jun 17 2017 11:22:54
IST --> Sat Jun 17 2017 12:16:54
我需要像这样打印
{ _useCache: false,
_tzInfo: {},
_day: NaN,
year: NaN,
month: NaN,
date: NaN,
hours: NaN,
minutes: NaN,
seconds: NaN,
milliseconds: NaN,
timezone: 'America/New_York',
_dateProxy: Invalid Date,
_timeProxy: NaN }
{ _useCache: false,
_tzInfo: {},
_day: NaN,
year: NaN,
month: NaN,
date: NaN,
hours: NaN,
minutes: NaN,
seconds: NaN,
milliseconds: NaN,
timezone: 'America/Los_Angeles',
_dateProxy: Invalid Date,
_timeProxy: NaN }
PDT --> Sat Jun 17 2017 11:46:54
MDT --> Sat Jun 17 2017 11:24:54
CDT --> Sat Jun 17 2017 11:45:54
EDT --> Sat Jun 17 2017 11:12:54
MST --> Sat Jun 17 2017 11:33:54
EST --> Sat Jun 17 2017 11:22:54
IST --> Sat Jun 17 2017 12:16:54
是否可以使用时区将unix时间戳转换为不同的本地时间?我尝试运行
timezone js
包,但在npm.runkit.com中不断出错,
所以我决定给你们看一个流行音乐的例子。它还有一个子模块时刻时区:
npm install -S moment-timezone
而且使用它很简单
const moment = require('moment-timezone');
let timestamp = moment(1497678894647);
let NYTime = timestamp.tz('America/New_York').format('ddd MMM D Y HH:mm:ss');
console.log(NYTime);
哪些日志:
"Sat Jun 17 2017 01:54:54"
您可以在npm.runkit上看到一个示例
编辑:
因此,给定您的console.log语句,您可以像
var moment = require('moment-timezone');
moment.defaultFormat = 'ddd MMM D Y HH:mm:ss';
var PDT = moment('1497680592200').tz('America/New_York').format();
var MDT = moment('1497680592200').tz('America/Chihuahua').format();
var CDT = moment('1497680592200').tz('America/Havana').format();
var EDT = moment('1497680592200').tz('America/Detroit').format();
var MST = moment('1497680592200').tz('America/Creston').format();
var IST = moment('1497680592200').tz('Asia/Kolkata').format();
使用Javascript,您可以使用以下语法将日期和时间转换为不同的时区
var PDT = new Date(timestamp).toLocaleString('en-US', { timeZone: 'America/Los_Angeles' });
var MDT = new Date(timestamp).toLocaleString('en-US', { timeZone: 'America/Chihuahua' });
var CDT = new Date(timestamp).toLocaleString('en-US', { timeZone: 'America/Havana' });
var EDT = new Date(timestamp).toLocaleString('en-US', { timeZone: 'America/Detroit' });
var MST = new Date(timestamp).toLocaleString('en-US', { timeZone: 'America/Creston' });
希望这能起作用我很确定您需要将时间戳转换为日期字符串。来自文件timezoneJS.Date(dt_str_tz,[tz])。所以试着改变123412341234->10/31/2008或任何你想要的日期。顺便说一句,你的时区列表有点奇怪。你有去纽约的PDT,选择古巴去CDT,等等。。如果你在寻找美国的主要时区,通常选择的列表(从东到西)是:美国/纽约
,美国/芝加哥
,美国/丹佛
,美国/凤凰
,美国/洛杉矶
,美国/安克雷奇
,太平洋/火奴鲁鲁
。IST TIMENW Date()怎么样?toLocaleString('en-US',{时区:'亚洲/加尔各答'})太棒了将代码更改为var zone='Asia/Kolkata'时,日期和时间不正确;var IST=力矩('1497680592200').tz(区域).format()。。。为什么会有这种行为?。我还尝试了使用var IST=moment('1497680592200').tz('“+zone+'”).format();我收到了错误消息。@MattJohnson可能是,moment将以任何方式解析它们。@AbdulManaf您的错误是什么?而且您不必使用串联空字符串作为缓冲区。@Kano-如果您将其作为字符串传递,则还需要将x
作为参数传递。否则,您将得到一个弃用警告,因为您不能保证回退到Date
对象的解析器能够正确工作。