Формат JavaScript дата для гггг-ММ-ДД
привет все у меня есть формат даты ВС мая 11,2014 как я могу конвертировать его в 2014-05-11 в javascript.
function taskDate(dateMilli) {
var d = (new Date(dateMilli) + '').split(' ');
d[2] = d[2] + ',';
return [d[0], d[1], d[2], d[3]].join(' ');
}
var datemilli = Date.parse('Sun May 11,2014');
taskdate(datemilli);
приведенный выше код дает мне тот же формат даты ВС мая 11,2014 пожалуйста, помогите
26 ответов:
можно сделать
function formatDate(date) { var d = new Date(date), month = '' + (d.getMonth() + 1), day = '' + d.getDate(), year = d.getFullYear(); if (month.length < 2) month = '0' + month; if (day.length < 2) day = '0' + day; return [year, month, day].join('-'); }пример использования:
alert(formatDate('Sun May 11,2014'));выход:
2014-05-11демо на скрипке: http://jsfiddle.net/abdulrauf6182012/2Frm3/
просто использовать встроенный
toISOStringметод, который приводит вашу дату в формат ISO 8601.yourDate.toISOString().split('T')[0]где yourDate-это ваш объект даты.
Я использую этот способ, чтобы получить дату в формате гггг-ММ-ДД :)
var todayDate = new Date().toISOString().slice(0,10);
самый простой способ конвертировать вашу дату в формат гггг-ММ-ДД, это сделать так:
var date = new Date("Sun May 11,2014"); var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 )) .toISOString() .split("T")[0];как работает :
new Date("Sun May 11,2014")преобразует строку"Sun May 11,2014"к объекту даты, который представляет времяSun May 11 2014 00:00:00в часовом поясе на основе текущей локали (настройки хост-системы)new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))преобразует дату в объект даты, который соответствует времениSun May 11 2014 00:00:00в формате UTC (стандартное время) путем вычитания часового пояса смещение.toISOString()преобразует объект даты в строку ISO 86012014-05-11T00:00:00.000Z.split("T")разбивает строку на массив["2014-05-11", "00:00:00.000Z"][0]берет первый элемент этого массива
демо
var date = new Date("Sun May 11,2014"); var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 )) .toISOString() .split("T")[0]; console.log(dateString);
format = function date2str(x, y) { var z = { M: x.getMonth() + 1, d: x.getDate(), h: x.getHours(), m: x.getMinutes(), s: x.getSeconds() }; y = y.replace(/(M+|d+|h+|m+|s+)/g, function(v) { return ((v.length > 1 ? "0" : "") + eval('z.' + v.slice(-1))).slice(-2) }); return y.replace(/(y+)/g, function(v) { return x.getFullYear().toString().slice(-v.length) }); }результат:
format(new Date('Sun May 11,2014'), 'yyyy-MM-dd') "2014-05-11
комбинация некоторых ответов:
var d = new Date(date); date = [ d.getFullYear(), ('0' + (d.getMonth() + 1)).slice(-2), ('0' + d.getDate()).slice(-2) ].join('-');
toISOString()предполагает, что ваша дата является локальным временем и преобразует его в UTC. Вы получите неверную строку даты.следующий метод должен возвращать то, что вам нужно.
Date.prototype.yyyymmdd = function() { var yyyy = this.getFullYear().toString(); var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based var dd = this.getDate().toString(); return yyyy + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]); };Источник: https://blog.justin.kelly.org.au/simple-javascript-function-to-format-the-date-as-yyyy-mm-dd/
почему бы просто не использовать
var date = new Date('1970-01-01'); //or your date here console.log((date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear());простой и сладкий ;)
Я предлагаю использовать что-то вроде этого https://github.com/brightbits/formatDate-js вместо того, чтобы пытаться реплицировать его каждый раз, просто используйте библиотеку, которая поддерживает все основные действия strftime.
new Date().format("%Y-%m-%d")
ни один из этих ответов меня не удовлетворил. Я хотел кросс-платформенное решение, которое дает мне день в местном часовом поясе без использования каких-либо внешних библиотек.
вот что я придумал:
function localDay(time) { var minutesOffset = time.getTimezoneOffset() var millisecondsOffset = minutesOffset*60*1000 var local = new Date(time - millisecondsOffset) return local.toISOString().substr(0, 10) }это должно вернуть День даты, в формате гггг-ММ-ДД, в часовом поясе ссылки на дату.
например
localDay(new Date("2017-08-24T03:29:22.099Z"))вернутся"2017-08-23"хотя это уже 24-й в UTC.вам нужно будет полифилл дата.прототип.toISOString для его работы в IE8,но он должен поддерживаться везде.
вы можете попробовать это: https://www.npmjs.com/package/timesolver
npm i timesolverиспользуйте его в своем коде:
const timeSolver = require('timeSolver'); const date = new Date(); const dateString = timeSolver.getString(date, "YYYY-MM-DD");вы можете получить строку даты с помощью этого метода:
getString
надеюсь, что это поможет вам!
function myYmd(D){ var pad = function(num) { var s = '0' + num; return s.substr(s.length - 2); } var Result = D.getFullYear() + '-' + pad((D.getMonth() + 1)) + '-' + pad(D.getDate()); return Result; } var datemilli = new Date('Sun May 11,2014'); document.write(myYmd(datemilli));
переформатирование строки даты довольно прямолинейно, например
var s = 'Sun May 11,2014'; function reformatDate(s) { function z(n){return ('0' + n).slice(-2)} var months = [,'jan','feb','mar','apr','may','jun', 'jul','aug','sep','oct','nov','dec']; var b = s.split(/\W+/); return b[3] + '-' + z(months.indexOf(b[1].substr(0,3).toLowerCase())) + '-' + z(b[2]); } console.log(reformatDate(s));
function formatDate(date) { var year = date.getFullYear().toString(); var month = (date.getMonth() + 101).toString().substring(1); var day = (date.getDate() + 100).toString().substring(1); return year + "-" + month + "-" + day; } alert(formatDate(new Date()));
Если у вас нет ничего против использования библиотек; вы можете просто использовать моменты.библиотека js вот так...
var now = new Date(); var dateString = moment(now).format('YYYY-MM-DD'); var dateStringWithTime = moment(now).format('YYYY-MM-DD HH:mm:ss');<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
чтобы рассмотреть часовой пояс также, Этот лайнер должен быть хорош без какой-либо библиотеки:
new Date().toLocaleString("en-IN", {timeZone: "Asia/Kolkata"}).split(',')[0]
Если дата должна быть одинаковой во всех часовых поясах, например, представляет некоторое значение из базы данных, то обязательно используйте utc-версии дня, месяца, функции fullyear на объекте даты js, поскольку это будет отображаться во времени utc и избегать ошибок 1 в определенных часовых поясах. Еще лучше использовать момент.библиотека дат js для такого форматирования
еще одна комбинация ответов. Хорошо читаемый, но немного длинный.
function getCurrentDayTimestamp() { const d = new Date(); return new Date( Date.UTC( d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds() ) // `toIsoString` returns something like "2017-08-22T08:32:32.847Z" // and we want the first part ("2017-08-22") ).toISOString().slice(0, 10); }
Я изменил ответ Samit Satpute следующим образом:
var newstartDate = new Date(); // newstartDate.setDate(newstartDate.getDate() - 1); var startDate = newstartDate.toISOString().replace(/[-T:\.Z]/g, ""); //.slice(0, 10); // To get the Yesterday's Date in YYYY MM DD Format console.log(startDate);
легко выполняется моим дата-шорткод:
const dateShortcode = require('date-shortcode') dateShortcode.parse('{YYYY-MM-DD}', 'Sun May 11,2014') //=> '2014-05-11'
некоторые из них выше были в порядке, но не были очень гибкими. Я хотел что-то, что действительно могло бы справиться с большим количеством крайних случаев, поэтому я взял ответ @orangleliu и расширил его. https://jsfiddle.net/8904cmLd/1/
function DateToString(inDate, formatString) { // Written by m1m1k 2018-04-05 // Validate that we're working with a date if(!isValidDate(inDate)) { inDate = new Date(inDate); } // see the jsFiddle for extra code to be able to use DateToString('Sun May 11,2014','USA'); //formatString = CountryCodeToDateFormat(formatString); var dateObject = { M: inDate.getMonth() + 1, d: inDate.getDate(), D: inDate.getDate(), h: inDate.getHours(), m: inDate.getMinutes(), s: inDate.getSeconds(), y: inDate.getFullYear(), Y: inDate.getFullYear() }; // Build Regex Dynamically based on the list above. // Should end up with something like this "/([Yy]+|M+|[Dd]+|h+|m+|s+)/g" var dateMatchRegex = joinObj(dateObject, "+|") + "+"; var regEx = new RegExp(dateMatchRegex,"g"); formatString = formatString.replace(regEx, function(formatToken) { var datePartValue = dateObject[formatToken.slice(-1)]; var tokenLength = formatToken.length; // A conflict exists between specifying 'd' for no zero pad -> expand to '10' and specifying yy for just two year digits '01' instead of '2001'. One expands, the other contracts. // so Constrict Years but Expand All Else if(formatToken.indexOf('y') < 0 && formatToken.indexOf('Y') < 0) { // Expand single digit format token 'd' to multi digit value '10' when needed var tokenLength = Math.max(formatToken.length, datePartValue.toString().length); } var zeroPad = (datePartValue.toString().length < formatToken.length ? "0".repeat(tokenLength) : ""); return (zeroPad + datePartValue).slice(-tokenLength); }); return formatString; }пример использования:
DateToString('Sun May 11,2014', 'MM/DD/yy'); DateToString('Sun May 11,2014', 'yyyy.MM.dd'); DateToString(new Date('Sun Dec 11,2014'),'yy-M-d');
вот один из способов сделать это:
var date = Date.parse('Sun May 11,2014'); function format(date) { date = new Date(date); var day = ('0' + date.getDate()).slice(-2); var month = ('0' + (date.getMonth() + 1)).slice(-2); var year = date.getFullYear(); return year + '-' + month + '-' + day; } console.log(format(date));
все данные ответы велики и помогли мне большой. В моей ситуации я хотел получить текущую дату в формате yyyy mm dd вместе с датой-1. Вот что сработало для меня.
var endDate = new Date().toISOString().slice(0, 10); // To get the Current Date in YYYY MM DD Format var newstartDate = new Date(); newstartDate.setDate(newstartDate.getDate() - 1); var startDate = newstartDate.toISOString().slice(0, 10); // To get the Yesterday's Date in YYYY MM DD Format alert(startDate);
это сработало для меня, и вы можете вставить это прямо в свой HTML, если это необходимо для тестирования:
<script type="text/javascript"> if (datefield.type!="date"){ //if browser doesn't support input type="date", initialize date picker widget: jQuery(function($){ //on document.ready $('#Date').datepicker({ dateFormat: 'yy-mm-dd', // THIS IS THE IMPORTANT PART!!! showOtherMonths: true, selectOtherMonths: true, changeMonth: true, minDate: '2016-10-19', maxDate: '2016-11-03' }); }) } </script>
просто используйте, как это определенно работает для YYYY MM DD, как (2017-03-12)
var todayDate = новая дата ().ломтик(0,10);
Comments