2017-04-26 18 views
0

私はFacebookのイベントを私のウェブサイトに持ち込みようとしています。彼らは別の地域から来るでしょう。たとえば、イベントは東部時間(UTCとの差は-4時間)、現地時間は中部時間(UTCとの差は-5時間)です。 私はグラフAPIをコンソールアプリケーションから呼び出しています。私はこのようなイベントの日付を取得:C#DateTimeOffsetを使用せずに文字列をDateTimeに変換する

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

開始時刻が表示さ:「2017-04-30T13:00:00から0400」オブジェクト{文字列}

私はその文字列を変換しようDateColumn型に変換すると、出力時間は次のように変更されます。 var dateTime = Convert.ToDateTime(startTime); {12/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); 
関連する問題