0

この日付形式を別の形式に変換する際に問題が発生しています。ここにいる誰かが私を助けてくれることを望んでいました。

これが私のコードです:

string fromFormat = "ddd, dd MM yyyy HH:mm:ss zzz"; 
string toFormat = "yyyy-MM-dd";

DateTime newDate = DateTime.ParseExact("Mon, 25 03 2013 00:00:00 GMT", fromFormat, null);

Console.WriteLine(newDate.ToString(toFormat));

- - - -編集 - - - -

22日を からに変更することで、エラーを取り除くことができました25。私の新しい問題は、タイムゾーンを GMT から EST に変換しようとしていることです。誰にもアイデアはありますか?

-------編集#2 -------

これが私の現在のコードです。タイムゾーンの変換にまだ問題があります。

var date = "Mon, 25 03 2013 00:00:00 GMT";

// Cuts off "GMT" portion of string
string newdate = date.Substring(0, 24);

// Switches the output of date
string fromFormat = "ddd, dd MM yyyy HH:mm:ss";
string toFormat = "yyyy-MM-dd";

DateTime newDate = DateTime.ParseExact(newdate, fromFormat, null);
string finaldate = newDate.ToString(toFormat);

// Output final date
Console.WriteLine(finaldate);

-------編集#3 -------

コード:

var input = "Mon, 25 03 2013 00:00:00 GMT";
var inner = input.Substring(0, 24);
var format = "ddd, dd MM yyyy HH:mm:ss";
var zoneId = "Eastern Standard Time";

var parsed = DateTime.ParseExact(inner, format, CultureInfo.InvariantCulture);

var utcDateTime = DateTime.SpecifyKind(parsed, DateTimeKind.Utc);
var eastern = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcDateTime, zoneId);


Console.WriteLine(eastern);

エラー:

Unhandled Exception: System.TimeZoneNotFoundException: Exception of type
   'System.TimeZoneNotFoundException' was thrown.
at System.TimeZoneInfo.FindSystemTimeZoneByFileName (System.String id, System.String
   filepath) [0x00000] in :0 
at System.TimeZoneInfo.FindSystemTimeZoneById (System.String id) [0x00000] in :0 
at System.TimeZoneInfo.ConvertTimeBySystemTimeZoneId (DateTime dateTime, System.String 
   destinationTimeZoneId) [0x00000] in :0 
at Program.Main () [0x00000] in :0 

どんな助けでも大歓迎です!ありがとう!

-------最終編集-------

これが最終的にタイムゾーンを変更し、必要な形式に変換したものです。助けてくれた @MattJohnson に感謝します!

// Cuts off 'GMT' portion of string
var newdate = date.Substring(0, 24);

var fromFormat = "ddd, dd MM yyyy HH:mm:ss";
var toFormat = "yyyy-MM-dd";
var zoneId = "Eastern Standard Time";


var parsed = DateTime.ParseExact(newdate, fromFormat, CultureInfo.InvariantCulture);

// Specifies UTC time and converts it to EST timezone
var utcDateTime = DateTime.SpecifyKind(parsed, DateTimeKind.Utc);
var eastern = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcDateTime, zoneId);

// Converts date to final format needed
var finaldate = eastern.ToString(toFormat);
4

7 に答える 7

0
string fromFormat = "ddd, dd MM yyyy HH:mm:ss zzz"; 
string toFormat = "yyyy-MM-dd";

DateTime newDate = DateTime.ParseExact("Mon, 22 03 2013 00:00:00 +00:00", fromFormat, null);

Console.WriteLine(newDate.ToString(toFormat));
于 2013-07-09T19:22:42.007 に答える
0

2 つの問題があります。

1) 選択された日が月曜日ではなく金曜日でした

2) 「zzz」はプラスまたはマイナスの 0:00 を必要とします

したがって、それを機能させるには次のようになります。

string fromFormat = "ddd, dd MM yyyy HH:mm:ss zzz";
string toFormat = "yyyy-MM-dd";

DateTime newDate = DateTime.ParseExact("Fri, 22 03 2013 00:00:00 +0:00", fromFormat, null);

Console.WriteLine(newDate.ToString(toFormat));
于 2013-07-09T19:21:19.777 に答える
0

タイム ゾーンの略語からオフセットまたは適切な名前に変換する簡単な組み込みの方法はありません。これについては、次のトピックで説明します。

タイムゾーンの略語

オフセットまたは適切な名前にマップされた、使用する略語のテーブルを作成するか、オフセットを使用するように受信日時文字列の形式を変更する必要があります。

于 2013-07-09T19:21:25.320 に答える