繁体   English   中英

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

[英]Convert weird date format to short DateTime

我有一个日期字符串,从ExtJS datetime选择器返回,看起来像这样:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM