次のような ExtJS 日時ピッカーから返された日付文字列があります。
Wed Apr 25 2012 00:00:00 GMT+0300 (GTB Daylight Time)
これから、C#またはJavaScriptを使用して、YYYY-mm-ddという形式にする必要があります。どうすればこれを行うことができますか? DateTime.Parse を使用してみましたが、解析できません。何か案が?
次のような ExtJS 日時ピッカーから返された日付文字列があります。
Wed Apr 25 2012 00:00:00 GMT+0300 (GTB Daylight Time)
これから、C#またはJavaScriptを使用して、YYYY-mm-ddという形式にする必要があります。どうすればこれを行うことができますか? DateTime.Parse を使用してみましたが、解析できません。何か案が?
時間とタイムゾーンの情報を気にしていないように見えるので、実際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);
これは、必要なフォーマットとカルチャを使用して文字列にフォーマットし直すことができます。
保証された形式の日付の文字列表現がある.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
JavaScript で
new Date("Wed Apr 25 2012 00:00:00 GMT+0300 (GTB Daylight Time)")
日付オブジェクトを提供します。次に、(UTC)年、月、日を選択して、日付形式(またはできればISO8601、または.getTime()を使用してエポックからのミリ秒)にフォーマットできます
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;
これはあなたがクリックするのに役立つかもしれません