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

Как конвертировать полную дату в короткую дату в 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.

4b9b3361

Ответ 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();

Ответ 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");