Подтвердить что ты не робот

Формат/формат Javascript

Мне нужно изменить дату/время с 2014-08-20 15:30:00, чтобы выглядеть как 08/20/2014 3:30 вечера

Можно ли это сделать с помощью объекта Date для javascript?

4b9b3361

Ответ 1

Да, вы можете использовать собственный javascript Date() объект и его методы.

Например, вы можете создать такую ​​функцию, как:

function formatDate(date) {
  var hours = date.getHours();
  var minutes = date.getMinutes();
  var ampm = hours >= 12 ? 'pm' : 'am';
  hours = hours % 12;
  hours = hours ? hours : 12; // the hour '0' should be '12'
  minutes = minutes < 10 ? '0'+minutes : minutes;
  var strTime = hours + ':' + minutes + ' ' + ampm;
  return date.getMonth()+1 + "/" + date.getDate() + "/" + date.getFullYear() + "  " + strTime;
}

var d = new Date();
var e = formatDate(d);

alert(e);

И отобразите также am/pm и правильное время.

Не забудьте использовать метод getFullYear(), а не getYear(), потому что он устарел.

DEMO http://jsfiddle.net/a_incarnati/kqo10jLb/4/

Ответ 2

Не заново изобретайте колесо. Существует много решений с открытым исходным кодом и COTS, которые уже существуют для решения этой проблемы.

Обратите внимание на следующие библиотеки JavaScript:


Demo

Я написал однострочный файл, используя Moment.js ниже. Вы можете посмотреть демо здесь: JSFiddle.

moment('2014-08-20 15:30:00').format('MM/DD/YYYY h:mm a'); // 08/20/2014 3:30 pm

Ответ 3

Для части даты: (месяц индексируется 0, а дни 1-индексируются)

var date = new Date('2014-8-20');
console.log((date.getMonth()+1) + '/' + date.getDate() + '/' +  date.getFullYear());

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

надеюсь, что это поможет

Ответ 4

Я не думаю, что это можно сделать RELIABLY со встроенными методами на родном объекте Date. Метод toLocaleString приближается, но если я правильно помню, он не будет работать корректно в IE < 10. Если вы можете использовать библиотеку для этой задачи, MomentJS - действительно потрясающая библиотека; и это упрощает работу с датами и временем. В противном случае, я думаю, вам придется написать базовую функцию, чтобы дать вам формат, который вы после.

function formatDate(date) {
    var year = date.getFullYear(),
        month = date.getMonth() + 1, // months are zero indexed
        day = date.getDate(),
        hour = date.getHours(),
        minute = date.getMinutes(),
        second = date.getSeconds(),
        hourFormatted = hour % 12 || 12, // hour returned in 24 hour format
        minuteFormatted = minute < 10 ? "0" + minute : minute,
        morning = hour < 12 ? "am" : "pm";

    return month + "/" + day + "/" + year + " " + hourFormatted + ":" +
            minuteFormatted + morning;
}

Ответ 5

Вы можете сделать это:

function formatAMPM(date) { // This is to display 12 hour format like you asked
  var hours = date.getHours();
  var minutes = date.getMinutes();
  var ampm = hours >= 12 ? 'pm' : 'am';
  hours = hours % 12;
  hours = hours ? hours : 12; // the hour '0' should be '12'
  minutes = minutes < 10 ? '0'+minutes : minutes;
  var strTime = hours + ':' + minutes + ' ' + ampm;
  return strTime;
}

var myDate = new Date();
var displayDate = myDate.getMonth()+ '/' +myDate.getDate()+ '/' +myDate.getFullYear()+ ' ' +formatAMPM(myDate);
console.log(displayDate);

Fiddle