2016-11-16 77 views
0

我試圖將從API調用接收到的此日期時間 - /Date(1445828400000-0400)/轉換爲更具可讀性的內容。將JSON日期時間轉換爲

我正在使用的API工具的UI顯示8:00 PM。服務器位於美國東部時區,我知道它意味着當地時間價值。目前夏令時在美國生效。

我需要將我從API獲得的值轉換爲美國的EST(或者我猜EDS)時間裏的人類可讀的日期時間,以確保我從API獲得的值與UI中的相同。我的電腦在UTC + 2時區。

搜索示例中,我得到了以下內容:

string s = @"""/Date(1445828400000-0400)/"""; 
DateTimeOffset dto = JsonConvert.DeserializeObject<DateTimeOffset>(s); 
DateTime utc = dto.UtcDateTime; 
var NYTZ = TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time"); 
var ny_time = TimeZoneInfo.ConvertTimeFromUtc(utc, NYTZ); 
Console.WriteLine(ny_time); 

這給了我10/25/2015 11:00:00 PM - 日期是正確的,但時間是隔靴搔癢什麼,我希望它是。

什麼是將時間格式轉換爲可讀性的正確方法?

+0

修復您的API,因爲它正在生成不兼容的日期。 JSON日期使用ISO8601格式,即'2015-10-25T23:00:00 + 5:00' –

+0

什麼生成日期?它對我來說看起來是無效的,而不是一個標準的Javascript日期對象,'-'是錯誤的 – Liam

+0

但是...如果json時間是EST,爲什麼要將它轉換爲UTC然後將其轉換回EST? – Will

回答

1

Json.NET默認使用ISO8601日期格式。要使用舊的Microsoft格式(本質上是一個逃脫Unix時間戳),您需要更改

var microsoftDateFormatSettings = new JsonSerializerSettings 
{ 
    DateFormatHandling = DateFormatHandling.MicrosoftDateFormat 
}; 
var date = JsonConvert.DeserializeObject<DateTimeOffset>(text, microsoftDateFormatSettings); 

的各種設置在Serializing Dates in JSON描述。

相關問題