Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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 如何更改日期对象的时区_Javascript_Reactjs_Frontend_Momentjs - Fatal编程技术网

Javascript 如何更改日期对象的时区

Javascript 如何更改日期对象的时区,javascript,reactjs,frontend,momentjs,Javascript,Reactjs,Frontend,Momentjs,我正在使用moment设置/更改日期对象的时区,而不是任何其他日期/时间值 这就是我目前正在做的: const moment = require("moment-timezone"); const dateNew = moment.tz(accountDate, "US/Pacific"); 这是accountDate值:2019年7月8日星期一06:05:22 GMT-0400(东部夏时制) 我想将其更改为:2019年7月8日星期一06:05:22 GMT-0700(太平洋夏令时) 但是da

我正在使用moment设置/更改日期对象的时区,而不是任何其他日期/时间值

这就是我目前正在做的:

const moment = require("moment-timezone");
const dateNew = moment.tz(accountDate, "US/Pacific");
这是accountDate值:
2019年7月8日星期一06:05:22 GMT-0400(东部夏时制)

我想将其更改为:
2019年7月8日星期一06:05:22 GMT-0700(太平洋夏令时)

但是
dateNew
仍在EDT时区

the output of `console.log(dateNew)` is :


Moment {_isAMomentObject: true, _i: Mon Jul 08 2019 06:05:22 GMT-0400 (Eastern Daylight Time), _isUTC: true, _pf: {…}, _locale: Locale, …}
_d: Sun Jul 07 2019 23:05:22 GMT-0400 (Eastern Daylight Time) {}
_i: Mon Jul 08 2019 06:05:22 GMT-0400 (Eastern Daylight Time) {}
_isAMomentObject: true
_isUTC: true
_isValid: true
_locale: Locale {_calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", ordinal: ƒ, _dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, …}
_offset: -420
_pf: {empty: false, unusedTokens: Array(0), unusedInput: Array(0), overflow: -2, charsLeftOver: 0, …}
_z: Zone {name: "US/Pacific", abbrs: Array(186), untils: Array(186), offsets: Array(186), population: 15000000}
__proto__: Object
但是
console.log(newdate(dateNew))
给出了以下输出

Mon Jul 08 2019 06:05:22 GMT-0400 (Eastern Daylight Time)

请帮忙。谢谢

你确实在改变时区,一切都很好,只需添加一个format(),我还没有足够的声誉来评论这一点,哈哈,但你为什么要使用Date(),只需坚持片刻()


你确实在改变时区,一切都很好,只需添加一个format(),我还没有足够的声誉来评论这一点,哈哈,但你为什么要使用Date(),只需坚持使用moment()


因为您包含了reactjs标记。我会用react.js的方式给你一个答案。您可以安装名为
矩时区
的npm包来解决此问题。请看一下他们的照片。下面是React中的完整示例

import React, { Component } from "react";
import ReactDOM from "react-dom";
import moment from "moment-timezone";
import "./styles.css";

class App extends Component {
  render() {
    const _date = "Mon Jul 08 2019 06:05:22 GMT-0400 (Eastern Daylight Time)";
    const result = moment.tz(_date, "US/Pacific");
    return (
      <div>
        <p>Origin Date : {_date}</p>
        <p>
          Converted Date : {result.format()} {result.tz()}
        </p>
      </div>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
import React,{Component}来自“React”;
从“react dom”导入react dom;
从“时刻时区”导入时刻;
导入“/styles.css”;
类应用程序扩展组件{
render(){
const_date=“2019年7月8日星期一06:05:22 GMT-0400(东部夏时制)”;
常数结果=时刻tz(_日期,“美国/太平洋”);
返回(
起始日期:{u Date}

转换日期:{result.format()}{result.tz()}

); } } const rootElement=document.getElementById(“根”);
ReactDOM.render(

,因为您包含了reactjs标记。我将以react.js的方式给您一个答案。您可以安装名为
时刻时区的npm包来解决这个问题。请也查看一下它们的。下面是react中的完整示例

import React, { Component } from "react";
import ReactDOM from "react-dom";
import moment from "moment-timezone";
import "./styles.css";

class App extends Component {
  render() {
    const _date = "Mon Jul 08 2019 06:05:22 GMT-0400 (Eastern Daylight Time)";
    const result = moment.tz(_date, "US/Pacific");
    return (
      <div>
        <p>Origin Date : {_date}</p>
        <p>
          Converted Date : {result.format()} {result.tz()}
        </p>
      </div>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
import React,{Component}来自“React”;
从“react dom”导入react dom;
从“时刻时区”导入时刻;
导入“/styles.css”;
类应用程序扩展组件{
render(){
const_date=“2019年7月8日星期一06:05:22 GMT-0400(东部夏时制)”;
常数结果=时刻tz(_日期,“美国/太平洋”);
返回(
起始日期:{u Date}

转换日期:{result.format()}{result.tz()}

); } } const rootElement=document.getElementById(“根”);
render(

我将它作为另一个答案发布,这样我就可以将它添加为code@Tanu

const accountDate = 'Mon Jul 08 2019 06:05:22 GMT-0400 (Eastern Daylight Time)' 
const dateNew = moment(accountDate).tz('US/Pacific') 
console.log(dateNew.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ zz')) 


//OUTPUT: Mon Jul 08 2019 03:05:22 GMT-0700 PDT
此外,您还可以添加或更改以下缩写,并添加带有其他方括号的括号:

var abbrs = {
    EST : 'Eastern Standard Time',
    EDT : 'Eastern Daylight Time',
    CST : 'Central Standard Time',
    CDT : 'Central Daylight Time',
    MST : 'Mountain Standard Time',
    MDT : 'Mountain Daylight Time',
    PST : 'Pacific Standard Time',
    PDT : 'Pacific Daylight Time',
};

moment.fn.zoneName = function () {
    var abbr = this.zoneAbbr();
    return abbrs[abbr] || abbr;
}
因此,现在的输出是:

console.log(dateNew.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ [(]zz[)]')) 

Mon Jul 08 2019 03:05:22 GMT-0700 (Pacific Daylight Time)

我把它作为另一个答案发布,这样我就可以把它添加为code@Tanu

const accountDate = 'Mon Jul 08 2019 06:05:22 GMT-0400 (Eastern Daylight Time)' 
const dateNew = moment(accountDate).tz('US/Pacific') 
console.log(dateNew.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ zz')) 


//OUTPUT: Mon Jul 08 2019 03:05:22 GMT-0700 PDT
此外,您还可以添加或更改以下缩写,并添加带有其他方括号的括号:

var abbrs = {
    EST : 'Eastern Standard Time',
    EDT : 'Eastern Daylight Time',
    CST : 'Central Standard Time',
    CDT : 'Central Daylight Time',
    MST : 'Mountain Standard Time',
    MDT : 'Mountain Daylight Time',
    PST : 'Pacific Standard Time',
    PDT : 'Pacific Daylight Time',
};

moment.fn.zoneName = function () {
    var abbr = this.zoneAbbr();
    return abbrs[abbr] || abbr;
}
因此,现在的输出是:

console.log(dateNew.format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ [(]zz[)]')) 

Mon Jul 08 2019 03:05:22 GMT-0700 (Pacific Daylight Time)

我不希望仅更改时区的日期对象。我希望转换的日期为:2019年7月8日星期一06:05:22 GMT-0700(太平洋夏令时)我不希望仅更改时区的日期对象。我希望转换的日期为:2019年7月8日星期一06:05:22 GMT-0700(太平洋夏令时)问题是我会完全停止使用新日期(),日期是正确的,但是你不能用Date()轻松地玩时区,这就是为什么我建议你只使用moment()。这可能会更好地解释它:还有一个备忘单,可以用矩来显示您想要的日期:它也在用矩来转换整个日期对象。您能分享一下您建议的代码片段吗。谢谢,这样您的代码就可以得到您想要的准确输出:const accountDate='Mon Jul 08 2019 06:05:22 GMT-0400(东部夏令时)'const dateNew=moment(accountDate.tz('US/Pacific')console.log(dateNew.format('ddd MMM DD YYYY HH:mm:ss[GMT]ZZ'))输出:2019年7月8日星期一03:05:22 GMT-0700[GMT]方括号之间只是在输出中添加了一个您选择的字符串问题是我将停止使用新日期()总的来说,日期是正确的,但是你不能像date()那样轻松地使用时区,这就是为什么我建议你只使用moment()。这可能会更好地解释它:还有一个备忘单,可以用矩来显示您想要的日期:它也在用矩来转换整个日期对象。您能分享一下您建议的代码片段吗。谢谢,这样您的代码就可以得到您想要的准确输出:const accountDate='Mon Jul 08 2019 06:05:22 GMT-0400(东部夏时制)'const dateNew=moment(accountDate.tz('US/Pacific')console.log(dateNew.format('ddd-MMM-DD-YYYY HH:mm:ss[GMT]ZZ')输出:2019年7月8日星期一03:05:22 GMT-0700[GMT]方括号之间只是将您选择的字符串添加到outputHey Sdpotts93我不想转换日期。我希望输出为2019年7月8日星期一06:05:22 GMT-0700 PDT。感谢我发布的问题:这是accountDate值:2019年7月8日星期一06:05:22 GMT-0400(东部夏令时)我想将其更改为:2019年7月8日星期一06:05:22 GMT-0700(太平洋夏令时)嘿,Sdpotts93我不想转换日期。我希望输出为2019年7月8日星期一06:05:22 GMT-0700 PDT。感谢我发布的问题:这是accountDate值:2019年7月8日星期一06:05:22 GMT-0400(东部夏令时)我想将其更改为:周一2019年7月8日06:05:22 GMT-0700(太平洋夏令时)