2012-01-08 2 views
1

как преобразовать этотКак преобразовать текст даты с помощью javascript?

Sun Jan 08 2012 00:00:00 GMT+0530 (Sri Lanka Standard Time) 

в

2012-01-08 

с JavaScript?

С уважением

Edit:

я фактически работал с ExtJS и не знал, есть встроенный способ сделать это с помощью ExtJS

так я смог сделать это

var date = new Date("Sun Jan 08 2012 00:00:00 GMT+0530 (Sri Lanka Standard Time)"); 
console.log(Ext.Date.format(date, 'Y-m-d')); 

, который дает мне 2012-01-08

+3

Есть сотни вопросов на эту тему в SO. Что вы попробовали/нашли? Что не сработало? –

+0

Смотрите эту ссылку: http://www.webdevelopersnotes.com/tips/html/javascript_date_and_time.php3 – Abbas

ответ

2

На сегодняшний день застройщик можно передать строку даты :)

var date = new Date("Sun Jan 08 2012 00:00:00 GMT+0530 (Sri Lanka Standard Time)"); 
[ date.getFullYear(), date.getMonth() + 1 , date.getDate() + 1 ].join("-"); 
//"2012-1-8" 
+0

Вы можете, но только ** документально подтвержденный формат ** для этой строки не соответствует формату, который пытался использовать ОП. Кстати, хотя я тестировал его в разных браузерах, когда вы отправили свой ответ, и все они были довольны этим. –

2

Там нет реального ярлыка, не до 5-го издания (несколько лет назад) произошло не стандартной формат даты строки поддерживается JavaScript (Date был просто необходимо, чтобы правильно проанализировать все, что toString выхода, без формата, фактически используемого либо указывается в стандарте), а по пятому изданию format that is explicitly supported для синтаксического анализа не совпадает с тем, что вы указали (вместо этого это упрощенная версия ISO-8601). Поэтому вам придется самостоятельно разбирать его, используя регулярные выражения и/или грубую силу (String#indexOf, String#substring, String#split) или использовать библиотеку (например, DateJS), чтобы сделать это за вас.

Это говорит, каждый браузер я попытался был счастлив, чтобы разобрать его для вас только через new Date, например:

var str = "Sun Jan 08 2012 00:00:00 GMT+0530 (Sri Lanka Standard Time)"; 
var dt = new Date(str); 

Live example Я попытался IE6, IE9, Chrome 15, Opera 11, Firefox 9, Firefox 5, Safari 5, Konquerer 4.7.3 и Midori 0.4.0 (распространяется через Windows и Linux). Поэтому, если вы довольны этим, и вы тестируете в своих целевых средах (которых я не знаю знаю, - это веб-браузеры, JavaScript также используется на серверах и настольных компьютерах), вы можете быть довольны только тем, что делаете это.

+0

Я действительно работал с extjs и не знал, что у него встроенный способ сделать это. var date = new Date ("Sun Jan 08 2012 00:00:00 GMT + 0530 (Стандартное время Шри-Ланки)"); console.log (Ext.Date.format (дата, 'Y-m-d')); который дает мне необходимый ответ 2012-01-08 –