【发布时间】:2019-03-07 21:48:06
【问题描述】:
我通过 Angular CLI 创建了一个新的 Angular 7 项目,并创建了新的 C# 项目。我没有在客户端和服务器端进行任何额外的配置。我创建了一个如下所示的表单。但是我的约会要在 3 小时前回到我的 c# 课。例如,我选择 '03/28/2019' ,但我选择 '03/27/2019 21:00.00' 。我尝试了日历的showTime 属性。但是,结果没有改变。我该如何解决这个问题?
您应该查看 stackblitz 控制台而不是浏览器控制台。 此外,当我将 <p-calendar formControlName="birthdate"></p-calendar> 更改为 <input type="date" formControlName="birthdate"> 时,它运行良好。 所以,我认为我的服务器没有问题。(服务器和客户端都一样。这是我的电脑)
.html 文件
<form [formGroup]="myForm" (ngSubmit)="save()">
<p-calendar formControlName="birthdate"></p-calendar> <br><br>
<button type="submit">Save</button>
</form>
.ts 文件
constructor(public fb: FormBuilder, public http: HttpClient) { }
myForm = this.fb.group({
birthdate: [null],
});
save() {
this.http.post('http://localhost:5000/api/values', this.myForm.value).subscribe(result => {
});
}
C# .cs 文件
[HttpPost]
public void Post([FromBody] MyObject value)
{
}
public class MyObject
{
public DateTime Birthdate { get; set; }
}
【问题讨论】:
-
听起来像是时区问题,你是不是在 GMT+3 或 GMT-3 时区
-
我的时区是 GMT+03:00 。但是html日期输入没问题。 @MikNiller
-
你的时区和你的小时偏移是相同的,这会让我怀疑。查看您的浏览器开发人员/网络工具,检查从 angular 到 c# 的实际传输内容
-
当我在我的 chrome 开发者工具中查看我的网络标签时,我看到了
2019-03-27T21:00:00.000Z。 @MikNiller -
然后我怀疑您的控件正在处理本地时间的日期(但不包括时区),当它被传输到后端时,它会被转换为 UTC,但是因为缺少时区部分,你损失了三个小时
标签: c# angular typescript primeng angular7