Формат 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 пожалуйста, помогите

1554   26  

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 8601 2014-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));

дата.js отлично подходит для этого.

require("datejs")
(new Date()).toString("yyyy-MM-dd")

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

    Ничего не найдено.