2010-01-10 2 views
2

У меня есть 2 вопроса о датах.Вопросы о датах javascript

Первый из них - как я могу получить «AM/PM» с даты в Javascript?

второй вопрос у меня есть этот код

var convertedStartDate = new Date(dueDate); 
    var month = convertedStartDate.getMonth() + 1; 
    var day = convertedStartDate.getDate(); 
    var year = convertedStartDate.getFullYear(); 
    var shortDueDate = month + "/" + day + "/" + year; 

Теперь, как вы можете видеть, что я хочу всегда этот формат мм/дд/гггг

Так мне интересно, если сказать DueDate является 1/9/2010 (mm/dd/yyyy), но человек ввел его в формате dd/mm/yyyy (какая-то другая версия даты).

бы

месяц = ​​1 день = 9 год = 2010

Или я должен сказать, это как-то всегда превращаются в мм/дд/гггг? Или он делает это собственный формат, чтобы он всегда получал правильный заказ? То есть, неважно, какой порядок они поставили в нем, всегда будет 9 в качестве дня.

+0

Если вы занимаетесь обработкой даты или должны обрабатывать множество способов, которыми пользователи могут вводить даты, date.js - это библиотека, которая охватывает многие из этих баз - http://www.datejs.com/ –

ответ

0

Здесь, дать этому попытку:

now = new Date(); 

hour = now.getHours(); 
var tag = ""; 

if (hour >= 12) { 
    tag = "pm"; 
} else { 
    tag = "am"; 
} 

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

+0

oh thats другая вещь есть еще одна встроенная вещь, чтобы сделать это с 1-12, как я получил 13 сот часов, когда я хотел это на 1. – chobo2

+0

К сожалению, нет :( –

+0

Пример не совсем правильный. Он должен сказать ' if (hour> = 12) '. В противном случае половина полудня будет« am » – Jacob

0

Вам нужно всегда включать/конвертировать любой пользователь, введенный в объект Date Javascript. Помните - Javascript является локальным для компьютера клиента ... у человека в США будут разные настройки формата, чем у человека в Великобритании или Китае.

Чтобы все было просто ... предложите или приведите подсказку возле текстового поля ввода желаемого формата ввода. Затем вернитесь к этому формату с помощью Regex. Таким образом, вы почти гарантированно получите желаемую дату ... ну ... если у пользователя не отключен Javascript. LOL ... в этом случае ... вам нужно конвертировать на серверную сторону (вы всегда должны делать это в любом случае).

0

Чтобы получить AM/PM времени, найдите старый код, который я написал давно. См. (Удалить am/pm) здесь, вы можете заменить его с помощью get подстроки.

function ValidateAdvancedTime(time, formatType){ 
    time = time.replace(".", ":"); 
    var newTime = time.substring(0, (time.indexOf(":") + 3)); // Strip out the seconds 
    var status = ValidateTime(newTime, formatType); 

    if(status == false) 
    return false; 

    var seconds = time.substring(time.indexOf(":") + 4, time.length); 
    if(seconds.length > 2) 
    **seconds = seconds.substring(0, 2);      // Remove any AM/PM afterwards** 

    if(!isNaN(seconds)) {           // Make sure its a number and it's between 0 and 59 
    if((seconds <= 59) && (seconds >= 0)) 
     return true; 
    } 
    return false; 

}

Насколько даты идти я никогда не имел никаких проблем хранения 1/9/2010 или 01/09/2010 в базе данных.

Смежные вопросы