Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用矩时区js将日期字符串转换为带时区的日期_Javascript_Date_Datetime_Momentjs_Moment Timezone - Fatal编程技术网

Javascript 使用矩时区js将日期字符串转换为带时区的日期

Javascript 使用矩时区js将日期字符串转换为带时区的日期,javascript,date,datetime,momentjs,moment-timezone,Javascript,Date,Datetime,Momentjs,Moment Timezone,我需要将日期字符串转换为PDT(太平洋夏令时),并且resutant datetime必须以本地时间显示 我试过了 console.log(moment.tz("16:23:42 Sep 27, 2018 PDT", 'HH:mm:ss MMM DD, YYYY PDT',"PDT").format()); 当我运行上面的代码时,它会显示出来 2018-09-27T16:23:42Z 这不是当地时间。其等价物的本地时间必须不同。如何获取指定日期字符串的本地时间 换句话说,我的意思是这样说,你

我需要将日期字符串转换为PDT(太平洋夏令时),并且resutant datetime必须以本地时间显示

我试过了

console.log(moment.tz("16:23:42 Sep 27, 2018 PDT", 'HH:mm:ss MMM DD, YYYY PDT',"PDT").format());
当我运行上面的代码时,它会显示出来

2018-09-27T16:23:42Z
这不是当地时间。其等价物的本地时间必须不同。如何获取指定日期字符串的本地时间


换句话说,我的意思是这样说,你可以试试这个,我想它会管用的

首先获取时区偏移量
timeZoneId
是您的时区

const offset =  moment['tz'](moment(new Date()), timeZoneId).utcOffset() * 60000;
其次,根据日期和偏移量创建新日期

console.log(new Date(new Date(yourDateString).getTime() + offset))

是的,
yourDateString
是您的日期字符串,更适合date obj,但您可以这样做:

var desiredFormat = "HH:mm:ss MMM DD, YYYY";
var timeToBeConverted = moment("16:23:42 Sep 27, 2018", desiredFormat);
var timeZone = "America/Los_Angeles";

console.log(timeToBeConverted.tz(timeZone).format(desiredFormat) + " PDT");
您提供的时区不能是“PDT”。如果在控制台中使用
moment.tz.names()
,您将获得有效时区名称的列表。在上面的例子中,我使用了“美国/洛杉矶”,但任何观察PDT的地区都可以