【问题标题】:PrimeNg Calendar date not working properlyPrimeNg 日历日期无法正常工作
【发布时间】: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"> 时,它运行良好。 所以,我认为我的服务器没有问题。(服务器和客户端都一样。这是我的电脑)

STACKBLITZ

.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


【解决方案1】:

我找到了解决方案 .Primeng calendar 有一个属性 dataType 。 DataType 默认为date。如果您设置string 而不是date,那么它可以正常工作并向服务器发送正确的日期。

StackBlitz

您可以从这个 stackblitz 链接的工作示例中看到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多