我有一个从 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
用来解析日期。假设月份部分可能只是一个数字(例如 2012-04-01 是Sun Apr 1 2012
),您需要使用的模式是ddd MMM d yyyy
.
“最难”的部分实际上是切割时间和时区部分。如果月份中的日期是一位数,则必须取长度为 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() 从 epoc 开始的毫秒数)
尝试使用 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;