首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从角6到Web提交模型后,日期就晚了一天

从角6到Web提交模型后,日期就晚了一天
EN

Stack Overflow用户
提问于 2019-05-04 17:29:26
回答 6查看 9.9K关注 0票数 3

我正在开发一个web应用程序,它使用Angular 6和PrimeNG控件进行前端开发,使用ASP.Net Web和Server进行后端开发。

在我的表单中,有两个PrimeNG日历控件可以将日期和结束日期保存到数据库中。提交表单后,收集所有表单字段以填充对象/模型,并将该模型传递给Web。该对象/模型使用类型记录代码以角6填充。下面是我在打字代码中的前端模型:

代码语言:javascript
运行
复制
export class MyPackage {
    public PackageId: number;
    public PackageUid: number;
    public PackageName: string;
    public PackageDesc: string;
    public ValidFrom: Date;
    public ValidTill: Date;
    public CreatedOn: Date;
}

下面是我的对象初始化过程,它使用了角6和类型记录:

代码语言:javascript
运行
复制
let pakg = new MyPackage();
pakg.PackageName = this.packageAddForm.controls["packageName"].value;
pakg.PackageDesc = this.packageAddForm.controls["packageDesc"].value;
pakg.ValidFrom = this.packageAddForm.controls["dateFrom"].value;
pakg.ValidTill = this.packageAddForm.controls["dateEnd"].value;

现在的问题是,当模型被传递到Web时,来自日期和结束日期值的减少了1天,我不知道为什么。我已经调试了我的角6代码,并看到它通过了我选择的确切日期,但是当这个模型到达Web时,日期会落后1天。

有谁能描述一下,为什么会出现这个问题,以及如何解决这个问题?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2019-05-23 06:13:30

一个可能的罪魁祸首是客户端和服务器之间的时区偏移。

当通过JavaScript客户端发送JSON日期时,使用JSON.stingify()方法将数据转换为JSON字符串。这个使用ISO 8601格式将所有日期转换为字符串,像这样:

代码语言:javascript
运行
复制
YYYY-MM-DDTHH:mm:ss.sssZ

这种格式的一个令人困惑的方面是字母Z在末尾的目的,它代表Zulu,或零UTC时区偏移量。

当日期转换为此字符串时,数值时间值实际上被修改为没有时区偏移量,而不是客户端的时区偏移量。这是为了规范实际时间,以防服务器处于不同的时区。

重要的是要确保Web被设置为基于零UTC偏移量来解释时间的字符串值表示。

票数 1
EN

Stack Overflow用户

发布于 2019-11-08 15:32:09

要解决这个问题,您需要将日期转换为"MM/DD/YYYY“格式,

遵循.ts文件中的以下步骤在角应用程序中,

1)导入DatePipe类

代码语言:javascript
运行
复制
import { DatePipe } from '@angular/common';

2)在构造函数中添加以下内容

代码语言:javascript
运行
复制
private datePipe: DatePipe

3)使用转换转换日期,

代码语言:javascript
运行
复制
this.StartDate = this.datePipe.transform(this.todayDate, 'MM/dd/yyyy');

注意:日期变量应该是任何类型。

票数 2
EN

Stack Overflow用户

发布于 2021-06-11 10:06:27

角客户端更改HTTP请求的有效负载日期格式。我解决了将此添加到模块提供程序中的问题:

代码语言:javascript
运行
复制
{ provide: MAT_DATE_LOCALE, useValue: 'en-GB' }, /* optional */
{ provide: MAT_MOMENT_DATE_ADAPTER_OPTIONS, useValue: { useUtc: true } }, 

然后像这样进口:

代码语言:javascript
运行
复制
import {MAT_MOMENT_DATE_ADAPTER_OPTIONS} from '@angular/material-moment-adapter';
import { MAT_DATE_LOCALE } from "@angular/material/core";

最后,将此部分添加到模块和自动导入中。

代码语言:javascript
运行
复制
import: [MatDatepickerModule,MatMomentDateModule]

你的问题也解决了,希望:)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55985132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档