Неправильное восприятие формата даты - PullRequest
3 голосов
/ 06 марта 2012

В моей форме у меня есть текстовое поле, и у меня есть поле с именем «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

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

Ответы [ 5 ]

1 голос
/ 06 марта 2012

даты - это слабость при работе с нативным JavaScript.Мне кажется, что использование библиотеки типа momentjs очень помогает при работе с датами.

1 голос
/ 06 марта 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;
}
0 голосов
/ 06 марта 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>

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

0 голосов
/ 06 марта 2012

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

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

0 голосов
/ 06 марта 2012

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

...