最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

c# - Convert weird date format to short DateTime - Stack Overflow

programmeradmin3浏览0评论

I have a date string, returned from a ExtJS datetime picker, which looks like this:

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

From this I would need to have it in this format : YYYY-mm-dd, using C# or JavaScript. How could I do this? I've tried using DateTime.Parse and it cannot be parsed. Any idea?

I have a date string, returned from a ExtJS datetime picker, which looks like this:

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

From this I would need to have it in this format : YYYY-mm-dd, using C# or JavaScript. How could I do this? I've tried using DateTime.Parse and it cannot be parsed. Any idea?

Share Improve this question edited Apr 22, 2021 at 20:26 Jason Aller 3,65228 gold badges41 silver badges39 bronze badges asked Apr 26, 2012 at 8:58 maephistomaephisto 5,18212 gold badges56 silver badges75 bronze badges 1
  • i would go for an adaption of your js code, to get an invariant format (eg. ticks) which can be parsed easily (eg unix-timestamp, iso-format) ... – user57508 Commented Apr 26, 2012 at 9:06
Add a ment  | 

5 Answers 5

Reset to default 5

You don't seem to care about the time and timezone information so you can in fact use DateTime.ParseExact to parse the date. Assuming that the day of month part may be just a single digit (e.g. 2012-04-01 is Sun Apr 1 2012) the pattern you need to use is ddd MMM d yyyy.

The "hardest" part is really chopping of the time and timezone part. If the day of month is a single digit you have to take of substring of length 14; otherwise of length 15. Here is a way to get the index of the 4th space character in a string:

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);

You can then parse the date into a DateTime:

var date = DateTime
  .ParseExact(str.Substring(0, index), "ddd MMM d yyyy", CultureInfo.InvariantCulture);

This can be formatted back into a string using whatever format and culture you need.

In .NET, where you have a string representation of a date that has a guaranteed format, you can use DateTime.ParseExact to parse it:

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

May be this can help you Click

try this using 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;

In JavaScript

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

Will give you a date object. You can then format it to your date format (or preferably ISO8601, or milliseconds from the epoc using .getTime()) by picking out the (UTC) year, month and day

发布评论

评论列表(0)

  1. 暂无评论