Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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_Angular_Date - Fatal编程技术网

Javascript日期显示前一天

Javascript日期显示前一天,javascript,angular,date,Javascript,Angular,Date,我在Angular应用程序中使用mydatepicker。当用户单击特定日期时,我将获得所选日期。但我想有一个这样的日期格式 20180320 或 所以我所做的是转换如下 onDateChange(event) { this.selectDate = event.jsdate.toISOString().slice(0,10) } 这有助于我获得格式。但它显示的是前一天。这意味着,如果用户从日历my selectDate=2018-03-19中选择2018-03-20 我可以用“时刻

我在Angular应用程序中使用mydatepicker。当用户单击特定日期时,我将获得所选日期。但我想有一个这样的日期格式

20180320

所以我所做的是转换如下

onDateChange(event) {
    this.selectDate = event.jsdate.toISOString().slice(0,10)
}
这有助于我获得格式。但它显示的是前一天。这意味着,如果用户从日历my selectDate=2018-03-19中选择2018-03-20


我可以用“时刻”来做,但出于某些原因,我不使用这个项目。有人能帮我纠正这个问题吗?

ToIsString始终在UTC+0时间。如果您使用console.log,您应该会在末尾看到一个Z。这意味着格林尼治标准时间


试着用这个来解释时区

onDateChange(event){
    var localDate =  new Date(event.jsdate.getTime() - event.jsdate.getTimezoneOffset() * 60000);
    this.selectDate = localDate.toISOString().slice(0,10);
}

用原型函数试试这个

Date.prototype.getDDMMYYYY = function () {
    var date = JSON.stringify(this.getDate()).length == 1 ? ("0" + this.getDate()) : this.getDate();
    var month = JSON.stringify(this.getMonth()).length == 1 ? ("0" + this.getMonth()) : this.getMonth();
    var year = this.getFullYear();
    return  year+"-"+month+"-"+date;
}
然后替换这个代码

onDateChange(event){
   this.selectDate = event.jsdate.getDDMMYYYY()
}

您可能在时区方面有问题。检查日历时区是否与您自己的时区相匹配。这是有效的。您能解释一下吗?它基本上创建了一个新的日期,可以根据时区偏移量进行调整,因此当您调用
toISOString()
时,它将为您提供本地日期时间,而不是UTC日期时间
onDateChange(event){
   this.selectDate = event.jsdate.getDDMMYYYY()
}