【发布时间】:2019-09-05 03:23:51
【问题描述】:
几天来,我一直在尝试让我的服务器端代码 (C#) 保存通过 API 调用发送到 Postgres 的时间戳。
如果我将DateTime.Now() 附加到数据传输对象,它似乎工作正常,但是当我尝试解析从客户端发送的日期时间时,我得到一个 400
**0: "The input was not valid."**.
作为我的回应。
我的课是这样的
TS:
export interface ArtistShows {
showDate: string;
venue: string;
id?: string;
bandsAlsoPlaying: Array<string>;
}
C#
public class ArtistShow
{
public Guid Id { get; set; }
public DateTime ShowDate { get; set; }
public string Venue { get; set; }
public string BandsAlsoPlaying { get; set; }
public virtual Artist Artist { get; set; }
}
映射新表单的方法(带输出日期)(TS)
private _mapNewShowForm(): ArtistShows {
let showDate = this.newShowForm.get(this.newShowFormEnum.DATE).value;
let convertedShowDate = new Date(showDate);
return {
bandsAlsoPlaying: [],
showDate: convertedShowDate.toISOString(),
venue: `${this.newShowForm.get(this.newShowFormEnum.VENUE).value}, ${this.newShowForm.get(this.newShowFormEnum.CITY).value}`
};
}
请求的日期格式:“2019-01-04T00:00:00.000Z” 所需格式:“2018-12-29 20:23:22.667766”
我的问题是,有谁知道我应该以什么格式将日期发送到后端(我听说它是 ISO 8601)?我什至应该对客户端上的日期做任何事情吗?以及如何将我的 JS 日期转换为将保存在 PG 中的日期?
我还在使用带有 Postgres 的 Microsoft Entity Framework Core(如果有帮助的话)
【问题讨论】:
-
尝试使用
moment.jslib。它非常适合使用日期时间。 momentjs.com/docs/#/displaying/format - 使用moment.js格式化的文档。默认情况下,moment().format()返回 ISO 8601 格式的当前日期时间。 -
我会看一下(我已经将这些文档保存在我的书签中很久了),但我真的很想了解如何在没有帮助的情况下将日期转换为 ISO 8061图书馆。
-
根据此文档developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 。
toISOString方法返回 ISO8601 格式的日期。 -
您也可以尝试通过
getTime方法developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… 将其转换为时间戳。 -
我推荐
date-fns而不是moment.js,因为后者在依赖方面是一种资源消耗。
标签: angular postgresql typescript asp.net-core entity-framework-core