Как преобразовать полную дату в короткую дату в JavaScript? - PullRequest
39 голосов
/ 10 января 2010

У меня есть такая дата, понедельник, 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.

Ответы [ 8 ]

47 голосов
/ 10 января 2010

Метод 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() против getFullYear(), getDate() против getDay(), getDate() колеблется от 1,31, но getMonth() от 0 .11

Это беспорядок, и мне всегда нужно заглядывать. http://www.w3schools.com/jsref/jsref_obj_date.asp)

22 голосов
/ 05 апреля 2017

Вот, пожалуйста:

(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
4 голосов
/ 18 августа 2018
var d = new Date("Wed Mar 25 2015 05:30:00 GMT+0530 (India Standard Time)"); 
document.getElementById("demo").innerHTML = d.toLocaleDateString();
1 голос
/ 13 октября 2017

Это отличное место, чтобы использовать 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, которое может сдвинуть дату на следующий день, если ваш пользователь находится на противоположной стороне строки международной даты.
    • т.е. клиент +/- 12 часов или более
  • JavaScript не даст вам полных 10 символов для приведенного дополнения.
    • т.е. Возможно, ваша служба ожидает «Короткая дата» 01.01.2015 », но если вы просто добавите ее, как в приведенном выше случае, вы получите« 01.01.2015 »

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

Например: moment('01/01/2001').format('L'); Результатом будет 01.01.2001

Посмотрите на этот момент. Js sandbox на jsfiddle

1 голос
/ 01 марта 2017

date.toLocaleDateString('en-US') отлично работает. Вот еще немного информации об этом: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString

0 голосов
/ 04 марта 2018

Вы можете сделать это довольно легко с моим пакетом date-shortcode :

const dateShortcode = require('date-shortcode')

var startDate = 'Monday, January 9, 2010'
dateShortcode.parse('{M/D/YYYY}', startDate)
//=> '1/9/2010'
0 голосов
/ 27 июля 2013

Я смог сделать это с:

var dateTest = new Date("04/04/2013");
dateTest.toLocaleString().substring(0,dateTest.toLocaleString().indexOf(' '))

04/04/2013 предназначен только для тестирования, замените его объектом Date.

0 голосов
/ 17 октября 2011

Попробуйте это:

new Date().toLocaleFormat("%x");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...