将奇怪的日期格式转换为简短的DateTime

时间:2012-04-26 08:58:02

标签: c# javascript asp.net html

我有一个日期字符串,从ExtJS日期时间选择器返回,如下所示:

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

由此我需要使用这种格式:YYYY-mm-dd,使用C#或JavaScript。 我怎么能这样做?我已经尝试使用DateTime.Parse而无法解析它。 有什么想法吗?

谢谢!

5 个答案:

答案 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;