1

次のような ExtJS 日時ピッカーから返された日付文字列があります。

Wed Apr 25 2012 00:00:00 GMT+0300 (GTB Daylight Time)

これから、C#またはJavaScriptを使用して、YYYY-mm-ddという形式にする必要があります。どうすればこれを行うことができますか? DateTime.Parse を使用してみましたが、解析できません。何か案が?

4

5 に答える 5

5

時間とタイムゾーンの情報を気にしていないように見えるので、実際DateTime.ParseExactに日付を解析するために使用できます。月の日の部分が 1 桁の場合 (たとえば 2012-04-01 はSun Apr 1 2012)、使用する必要があるパターンは ですddd MMM d yyyy

「最も難しい」部分は、時間とタイムゾーンの部分を切り刻むことです。日が 1 桁の場合、長さ 14 の部分文字列を取得する必要があります。それ以外の長さは 15 です。文字列の 4 番目の空白文字のインデックスを取得する方法を次に示します。

var str = "Wed Apr 25 2012 00:00:00 GMT+0300 (GTB Daylight Time)";
var index = -1;
for (var i = 0; i < 4; i += 1)
  index = str.IndexOf(' ', index + 1);

次に、日付を次のように解析できますDateTime

var date = DateTime
  .ParseExact(str.Substring(0, index), "ddd MMM d yyyy", CultureInfo.InvariantCulture);

これは、必要なフォーマットとカルチャを使用して文字列にフォーマットし直すことができます。

于 2012-04-26T09:24:33.210 に答える
2

保証された形式の日付の文字列表現がある.NETでは、次のようDateTime.ParseExactに解析できます。

var input  = "Wed Apr 25 2012 00:00:00 GMT+0300 (GTB Daylight Time)"
                            .Substring(0, 15);
var format = "ddd MMM dd YYYY";
var date = DateTime.ParseExact(input, format, CultureInfo.InvariantCulture);

// Now date is a DateTime holding the date

var output = date.ToString("yyyy-MM-dd");

// Now output is 2012-04-25
于 2012-04-26T09:10:41.563 に答える
1

JavaScript で

new Date("Wed Apr 25 2012 00:00:00 GMT+0300 (GTB Daylight Time)")

日付オブジェクトを提供します。次に、(UTC)年、月、日を選択して、日付形式(またはできればISO8601、または.getTime()を使用してエポックからのミリ秒)にフォーマットできます

于 2012-04-26T09:04:15.723 に答える
1

Javascriptを使用してこれを試してください。

var d = new Date('Wed Apr 25 2012 00:00:00 GMT+0300 (GTB Daylight Time)');
var curr_day = d.getDate();
var curr_month = ('0'+(d.getMonth()+1)).slice(-2)
var curr_year = d.getFullYear();
var new_date  = curr_year+"-"+curr_month+"-"+curr_day;
于 2012-04-26T09:06:49.150 に答える
1

これはあなたがクリックするのに役立つかもしれません

于 2012-04-26T09:02:53.050 に答える