2017-04-26 84 views
0

我試圖將facebook事件帶到我的網站。他們將來自不同的地區。例如,事件發生在東部時間(與UTC的時差爲-4小時),當地時間爲中部時間(與UTC的時差爲-5小時)。 我從控制檯應用程序調用他們的圖形API。我得到的事件的日期是這樣的:C#將字符串轉換爲DateTime而不使用DateTimeOffset

// get event items 
me = fbClient.Get(url); 
var startTime = me["start_time"]; 
var endTime = me["end_time"]; 

開始時間表示: 「2017-04-30T13:00:00-0400」 對象{string}裏

當我試圖將其字符串轉換轉換爲DateColumn類型,它將輸出時間更改爲: var dateTime = Convert.ToDateTime(startTime); {4/30/2017 12:00:00 PM}

它將小時從13轉換爲12,我如何使用DateTime將字符串轉換爲日期而不使用DateTimeoffset?

這個例子顯示瞭如何使用DateTimeOffset來做到這一點,但我需要我的DateTime類型? https://stackoverflow.com/a/19403747/1019042

+0

也許http://nodatime.org/有做一些有用的方法這個。我認爲你需要告訴datetime對象,你的工作時間是UTC -4 – Webbanditten

+0

'DateTime'只能存儲本地時間和UTC,而不是其他時區,這就是它轉換的原因。爲什麼你想避免'DateTimeOffset'?這不是它的用途嗎? – hvd

+0

'DateTimeOffset'具有'DateTime'屬性 - 使用它。 –

回答

2

您可以使用DateTimeOffsetDateTime屬性,就像您提供的鏈接中接受的答案一樣。

或者,如果你真的喜歡只是DateTime你可以這樣做,如果你切串中的時區:

var dt = DateTime.ParseExact(startTime.Substring(0,19), 
           "yyyy-MM-ddTHH:mm:ss", 
           CultureInfo.InvariantCulture);