Неправильный формат даты

В моей форме у меня есть текстовое поле и поле с именем «pickup_date». Я использую jquery Datepicker. Дата в формате дд / мм / гггг. Но когда я пытаюсь воссоздать дату с помощью JavaScript, дата неправильно отображается как месяц, а месяц отображается как дата. Как это исправить? Мой текущий сценарий и значения ниже:

<script language="javascript" type="text/javascript">
var dateStart = '07/03/2012'; //dd/mm/YYYY format
var timeStart = '09:00';

var startDate = new Date(dateStart + " " + timeStart);

document.write(startDate);

</script>

Вышеуказанное дает значение даты и времени как:

Tue Jul 03 2012 09:00:00

Он должен отображаться как

Wed Mar 07 2012 09:00:00

Как это исправить?


person Devner    schedule 06.03.2012    source источник
comment
Вы можете выразить свою признательность, внося свой вклад в сообщество, вместо того, чтобы использовать стандартные символы в конце каждого сообщения.   -  person Lightness Races in Orbit    schedule 06.03.2012
comment
Значит, пожалуйста, не пишите подписи с благодарностью в конце своих постов :)   -  person Lightness Races in Orbit    schedule 06.03.2012


Ответы (5)


даты являются слабым местом при работе с собственным javascript. Я считаю, что использование такой библиотеки, как momentjs, очень помогает при работе с датами.

person joidegn    schedule 06.03.2012

Посмотрите, как сделать TIMESTAMPS и работать с ними, преобразовать вашу дату во временную метку и преобразовать ее обратно в дату в желаемом формате, когда вы хотите ее распечатать.

функции в javascript:

получить текущую отметку времени

new Date().getTime(); //in miliseconds

печать отметки времени в строку

//make formated date
var date = new Date(unix_timestamp*1000);
// hours part from the timestamp
var hours = date.getHours();
// minutes part from the timestamp
var minutes = date.getMinutes();
// seconds part from the timestamp
var seconds = date.getSeconds();

// will display time in 10:30:23 format
var formattedTime = hours + ':' + minutes + ':' + seconds;

строка в метку времени

//this only supports limited formats
function toTimestamp(strDate){
 var datum = Date.parse(strDate);
 return datum/1000;
}

function toTimestamp(year,month,day,hour,minute,second){
 var datum = new Date(Date.UTC(year,month-1,day,hour,minute,second));
 return datum.getTime()/1000;
}
person MakuraYami    schedule 06.03.2012
comment
Можно ли применить это для получения правильного дня, месяца и года? Я в настоящее время возился с этим, и все же он печатает месяц как июль вместо мар - person Devner; 06.03.2012
comment
+1 за все ваши старания и указатели. Я опубликовал свое собственное решение выше. - person Devner; 07.03.2012
comment
@Denver, да, я так думаю, попробуй поискать функцию Date в гугле, там должно быть больше вроде .getSeconds. я не знаю тех, что в голове ^^ - person MakuraYami; 07.03.2012

Javascript использует американскую форму даты: mm/dd/YYYY.

person Naftali aka Neal    schedule 06.03.2012

Взгляните на globalize.js - это даст вам гораздо больше контроля над тем, как вы управляете датой для строки преобразования, чтобы ваше программное обеспечение могло легче адаптироваться к различным потребностям пользователей в форматах в зависимости от культуры.

Интернационализация и локализация в JavaScript все еще очень проблематичны.

person Cade Roux    schedule 06.03.2012

Хорошо, после того, как я потратил столько времени, я наконец придумал свое собственное решение без необходимости использовать какие-либо внешние библиотеки сложных вычислений. Пока мне кажется, что он работает отлично. Вот код:

<script language="javascript" type="text/javascript">

var dateStart = '07/03/2012';
var timeStart = '09:00';

var startDate = new Date(dateStart + " " + timeStart);

document.write(startDate);
document.write('<br />');

//declare an array
var my_arr = Array();
//explode/split the dd/mm/yyyy string so that we can collect it in our array
my_arr = dateStart.split('/');
//join the pieces of array in our mm/dd/yyyy format
var revised_date = my_arr[1] + '/' + my_arr[0] + '/' + my_arr[2];
//Generate the complete date
var startDate_revised = new Date(revised_date + " " + timeStart);
//Output the date
document.write(startDate_revised);
</script>

И спасибо всем за их вклад. Действительно ценю любую помощь.

person Devner    schedule 06.03.2012