我有一个日期字符串,从ExtJS日期时间选择器返回,如下所示:
Wed Apr 25 2012 00:00:00 GMT+0300 (GTB Daylight Time)
由此我需要使用这种格式:YYYY-mm-dd,使用C#或JavaScript。 我怎么能这样做?我已经尝试使用DateTime.Parse而无法解析它。 有什么想法吗?
谢谢!
答案 0 :(得分:5)
您似乎并不关心时间和时区信息,因此您实际上可以使用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);
可以使用您需要的任何格式和文化将其格式化为字符串。
答案 1 :(得分: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
答案 2 :(得分:1)
可能这可以帮助你Click
答案 3 :(得分:1)
在JavaScript中
new Date("Wed Apr 25 2012 00:00:00 GMT+0300 (GTB Daylight Time)")
会给你一个约会对象。然后,您可以通过选择(UTC)年,月和日来将其格式化为您的日期格式(或者最好是ISO8601,或使用.getTime()从epoc开始的毫秒数)
答案 4 :(得分: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;