Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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
重写Date.prototype.toJSON以解决angular 7中的时区问题_Angular_Typescript_Angular7 - Fatal编程技术网

重写Date.prototype.toJSON以解决angular 7中的时区问题

重写Date.prototype.toJSON以解决angular 7中的时区问题,angular,typescript,angular7,Angular,Typescript,Angular7,我有一个角度7应用程序。我正在向我的服务器发送日期。但是由于时区的原因,我去服务器的时间倒退了3个小时我了解到解决这个问题的唯一方法是编写Date.prototype.toJSON。但是,我不知道在angular中,我应该在哪里写下面的代码以及如何写?(例如index.html,app.module.ts,…)我在下面写了我的stackblitz示例 Date.prototype.toJSON = function(key){ //This code return me as strin

我有一个角度7应用程序。我正在向我的服务器发送日期。但是由于时区的原因,我去服务器的时间倒退了3个小时我了解到解决这个问题的唯一方法是编写
Date.prototype.toJSON
。但是,我不知道在angular中,我应该在哪里写下面的代码以及如何写?(例如index.html,app.module.ts,…)我在下面写了我的stackblitz示例

Date.prototype.toJSON = function(key){
    //This code return me as string like "25.02.0219 19:48:52"
    return this.toLocaleDateString() + ' ' + this.toLocaleTimeString();
}

您可以在应用程序的主入口点中覆盖日期原型,例如AppModule.ts,这样整个应用程序都可以使用它

应用程序模块.ts

export class AppModule {


  constructor() {
    this.overrideDate();
  }

  overrideDate() {
    Date.prototype.toJSON = function (key) {
      //This code return me as string like "25.02.0219 19:48:52"
      return this.toLocaleDateString() + ' ' + this.toLocaleTimeString();
    }

  }
现在您可以在您的组件中使用它

  save() {

    console.log(this.myForm.value);
    this.http.post("localhost:5000",this.myForm.value).subscribe(result => {});
  }  


希望这会有帮助

为什么不发送UTC或ISO日期呢?它们包含时区,大多数语言都可以使用。请提供您发送的UTC和ISO日期。我不确定您是否了解它们是什么…所以是的,您没有发送Iso或utc日期,因此您发布了。无论如何,即使这是一个非常糟糕的做法,你的问题似乎已经解决了,所以回头见!尝试使用
new Date().toutString()
new Date().toISOString()
,它们将返回包含时区的格式化日期,如果我没有弄错的话,还将返回白天的节省时间。您应该对代码进行分组。这意味着一个日期utils文件,一个服务,一个拦截器。。。你还必须在任何地方写
toJSON
,只是字母在变化,这使得这个论点变得无关紧要。非常感谢,这很好地工作了。最后我找到了解决办法。我认为,这是解决时区问题的唯一方法。因为,我尝试了一周的每一种方法@TheParam我很高兴我能帮上忙