2013-05-12 2 views
0

Когда я произвожу дату со следующим кодомдаты и времени форматирования в JavaScript

var date = new Date(); 

Я получаю DateTime следующего вида

Sat May 11 2013 21:54:23 GMT-0700 (PDT) 

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

Sat May 11 2013 21:54:23 
+0

Форматирование 'новой даты' зависит от реализации, поэтому вам лучше составить собственную строку из временной метки времени UTC. Почему вы не хотите (или не можете) использовать регулярные выражения/форматирование строк? –

ответ

1

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

Если вам нужна библиотека сторонних разработчиков, библиотека Datejs довольно тщательно. В этой библиотеке, было бы:

Date.today().toString("ddd MMM d yyyy H:mm:ss"); 

Вы могли бы, конечно, получить все значения компонентов от встроенного объекта даты, а затем построить свою собственную строку тоже.

Без добавления библиотеки, вы должны написать свой собственный путь, чтобы сделать этот конкретный формат:

function formatDate(date) { 
    function makeTwoDigits(val) { 
     var prefix = val <= 9 ? "0" : ""; 
     return prefix + val; 
    } 
    var dayOfWeek = date.getDay();     // 0-6, 0=Sunday 
    var month = date.getMonth();     // 0-11 
    var day = date.getDate();      // 1-31 
    var year = date.getFullYear();     // 2013 
    var hours = makeTwoDigits(date.getHours());  // 0-23 
    var mins = makeTwoDigits(date.getMinutes()); // 0-59 
    var secs = makeTwoDigits(date.getSeconds()); // 0-59 

    var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; 
    var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; 

    return days[dayOfWeek] + " " + months[month] + " " + day + " " + year + " " + 
      hours + ":" + mins + ":" + secs; 
} 

Работа демо: http://jsfiddle.net/jfriend00/zu7Uz/

+0

@benpearce - Я добавил пользовательскую функцию для создания нужного формата даты. – jfriend00

+0

@benpearce - Обновлена ​​моя функция для ввода начальных нулей, где это обычно делается. – jfriend00

1

Попробуйте дать этому выстрел:

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


Игнорирование выше библиотеки Javascript и делает его родным:

var date = new Date(); 
date = date.toDateString() + ' ' + date.getHours() + ':' + date.getMinutes() + ':' + date.getSeconds(); 

ли эта работа хорошо для вас?

+0

Спасибо Адаму. Я бы хотел добиться этого, добавив библиотеку. –

+0

О! Я думаю, что нашел что-то для вас: http://jsfiddle.net/3ZPXa/ Вот ссылка на stackoverflow для получения дополнительной информации http://stackoverflow.com/questions/3184618/javascript-asp-net-date-format- без-timezone-info-timezone-offsets ** edit: ** Я только заметил, что он не включал ваш час, мин и второе требование, поэтому я обновил скрипку и вот ссылка http://jsfiddle.net/3ZPXa/18 / – adamj