我已经尝试了几天,以获取服务器端代码(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” <-日期以没有时区的时间戳记存储在PG中
我的问题是,有人知道我应该以哪种格式将日期发送到后端(听说是ISO 8601)吗?我甚至应该对客户端上的Date做任何事情吗?以及如何将JS日期转换为将保存在PG中的日期?
我还在Postgres中使用Microsoft Entity Framework Core(如果有帮助的话)
答案 0 :(得分:0)
使用unix_timestamp作为基本格式,并根据需要进行转换
在c#中获取unix时间戳:
var timestamp = new DateTimeOffset(DateTime.Now).ToUnixTimeSeconds();
从C#中的Unix时间戳获取Datetime:
DateTime dt = DateTimeOffset.FromUnixTimeSeconds(1549741828).DateTime;
在javascript中获取unix时间戳:
let timestamp = parseInt(new Date().getTime()/1000);
从C#中的Unix时间戳获取Datetime:
let date = new Date(1549742450 * 1000)
答案 1 :(得分:0)
因此,老实说,我忘记了打开这个问题。 6个月后,我再次询问,得到了我一直在寻找的答案:
Parse JS Date.toIsoString in C#
最后,答案只是使用Convert.ToDateTime()
,它为我提供了所需的确切日期格式。
结束这个问题!