Как конвертировать полную дату в короткую дату в javascript?
У меня такая дата, как в этот понедельник, 9 января 2010 г.
Теперь я хочу преобразовать его в
1/9/2010 мм/дд/гггг
Я попытался сделать это
var startDate = "Monday, January 9, 2010";
var convertedStartDate = new Date(startDate);
var month = convertedStartDate.getMonth() + 1
var day = convertedStartDate.getDay();
var year = convertedStartDate.getFullYear();
var shortStartDate = month + "/" + day + "/" + year;
Однако он должен думать, что дата находится в другом формате, поскольку день возвращает 1 вместо 9.
Ответы
Ответ 1
Метод getDay()
возвращает число, указывающее день недели (0 = Солнце, 1 = Пн,... 6 = Сб). Используйте getDate()
, чтобы вернуть число за день в месяце:
var day = convertedStartDate.getDate();
Если вам нравится, вы можете попробовать добавить функцию пользовательского формата к прототипу объекта Date
:
Date.prototype.formatMMDDYYYY = function(){
return (this.getMonth() + 1) +
"/" + this.getDate() +
"/" + this.getFullYear();
}
После этого вы можете вызвать formatMMDDYYY()
в любом экземпляре объекта Date
. Конечно, это всего лишь очень конкретный пример, и если вам это действительно нужно, вы можете написать общую функцию форматирования, которая будет делать это на основе строки форматирования, вроде java SimpleDateeFormat (http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html)
(касательная: объект Date
всегда меня смущает... getYear()
vs getFullYear()
, getDate()
vs getDay()
, getDate()
изменяется от 1..31, но getMonth()
от 0..11
Это беспорядок, и мне всегда нужно заглянуть. http://www.w3schools.com/jsref/jsref_obj_date.asp)
Ответ 2
Здесь вы идете:
(new Date()).toLocaleDateString('en-US');
Что это!
вы можете использовать его для любого объекта даты
скажем.. у вас есть объект с именем currentDate
var currentDate = new Date(); //use your date here
currentDate.toLocaleDateString('en-US'); // "en-US" gives date in US Format - mm/dd/yy
(или)
Если вы хотите его в локальном формате, то
currentDate.toLocaleDateString(); // gives date in local Format
Ответ 3
var d = new Date("Wed Mar 25 2015 05:30:00 GMT+0530 (India Standard Time)");
document.getElementById("demo").innerHTML = d.toLocaleDateString();
Ответ 4
date.toLocaleDateString('en-US')
отлично работает. Вот еще информация об этом: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
Ответ 5
Это отличное место для использования Moment.js
JavaScript известен тем, что плохо обрабатывает даты. Есть несколько ошибок, которые вы будете восприимчивы, если вы просто добавите дату вместе следующим образом:
var startDate = "Monday, January 9, 2010";
var convertedStartDate = new Date(startDate);
var month = convertedStartDate.getMonth() + 1
var day = convertedStartDate.getDay();
var year = convertedStartDate.getFullYear();
var shortStartDate = month + "/" + day + "/" + year;
- JavaScript неявно добавляет смещение DateTime, которое может вывести дату на следующий день, если ваш пользователь находится на противоположной стороне линии International Date.
- то есть. клиент составляет +/- 12 часов и более.
- JavaScript не даст вам 10 символов для прилагаемого случая.
- то есть. Ваш сервис может ожидать "короткую дату" 01/01/2015 ", но если вы просто добавите, как в приведенном выше случае, вы получите" 1/1/2015"
Вы должны использовать Moment.js для обработки этого случая. Существует множество встроенных форматов для дат, и вы можете вручную указать их без риска добавления времени смещения даты или формата, отличающегося от того, что вы ожидаете.
Например:
moment('01/01/2001').format('L');
Результатом станет "01/01/2001"
Взгляните на эту игрушку sand.js на jsfiddle
Ответ 6
Вы можете сделать это довольно легко с моим пакетом date-shortcode :
const dateShortcode = require('date-shortcode')
var startDate = 'Monday, January 9, 2010'
dateShortcode.parse('{M/D/YYYY}', startDate)
//=> '1/9/2010'
Ответ 7
Немного опоздав на вечеринку, toLocaleDateString()
удалит ведущие 0 для дня и месяца, поэтому мы получим что-то вроде "1/9/1970", что, на мой взгляд, не идеально. Чтобы получить правильный формат MM/DD/YYYY
, мы можем использовать что-то вроде:
new Date(dateString).toLocaleDateString('en-US', {
day: '2-digit',
month: '2-digit',
year: 'numeric',
})
Ответ 8
Я смог сделать это с помощью
var dateTest = new Date("04/04/2013");
dateTest.toLocaleString().substring(0,dateTest.toLocaleString().indexOf(' '))
04/04/2013 предназначен только для тестирования, замените его на объект Date.
Ответ 9
Попробуйте следующее:
new Date().toLocaleFormat("%x");