it-swarm.com.de

Formatieren Sie das JavaScript-Datum in JJJJ-MM-TT

Hallo zusammen, ich habe ein Datumsformat So Mai 11,2014 wie kann ich es in 2014-05-11 in Javascript konvertieren.

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

der obige Code gibt mir das gleiche Datumsformat. So kann 11,2014 bitte helfen

190
user3625547

du kannst tun

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('-');
}

anwendungsbeispiel:

alert(formatDate('Sun May 11,2014'));

Ausgabe:

2014-05-11

Demo zu Geige: http://jsfiddle.net/abdulrauf6182012/2Frm3/

293
user3470953

Nutzen Sie einfach die integrierte toISOString-Methode, die Ihr Datum in das ISO 8601-Format bringt.

yourDate.toISOString().split('T')[0]

wo deinDatum dein Datumsobjekt ist.

236
Darth Egregious

Ich benutze diesen Weg, um das Datum im Format yyyy-mm-dd zu erhalten :)

var todayDate = new Date().toISOString().slice(0,10);
70

Der einfachste Weg, Ihr Datum in das Format JJJJ-MM-TT zu konvertieren, besteht darin, dies zu tun:

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

Wie es funktioniert :

  • new Date("Sun May 11,2014") konvertiert den String "Sun May 11,2014" in ein Datumsobjekt, das die Zeit Sun May 11 2014 00:00:00 in einer Zeitzone darstellt, basierend auf dem aktuellen Gebietsschema (Host-Systemeinstellungen).
  • new Date(date.getTime() - (date.getTimezoneOffset() * 60000 )) konvertiert Ihr Datum in ein Datumsobjekt, das der Uhrzeit Sun May 11 2014 00:00:00 in UTC (Standardzeit) entspricht, indem Sie den Zeitzonenversatz subtrahieren
  • .toISOString() konvertiert das Datumsobjekt in die ISO 8601-Zeichenfolge 2014-05-11T00:00:00.000Z
  • .split("T") teilt die Zeichenfolge in ein Array auf ["2014-05-11", "00:00:00.000Z"]
  • [0] nimmt das erste Element dieses Arrays

Demo

var date = new Date("Sun May 11,2014");
var dateString = new Date(date.getTime() - (date.getTimezoneOffset() * 60000 ))
                    .toISOString()
                    .split("T")[0];

console.log(dateString);

40
John Slegers
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)
    });
}

ergebnis:

format(new Date('Sun May 11,2014'), 'yyyy-MM-dd')
"2014-05-11
25
orangleliu

Eine Kombination einiger Antworten:

var d = new Date(date);
date = [
  d.getFullYear(),
  ('0' + (d.getMonth() + 1)).slice(-2),
  ('0' + d.getDate()).slice(-2)
].join('-');
11
aqwsez

toISOString() geht davon aus, dass Ihr Datum die Ortszeit ist und konvertiert sie in UTC. Sie erhalten eine falsche Datumszeichenfolge.

Die folgende Methode sollte das liefern, was Sie brauchen.

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]);
};

Quelle: https://blog.justin.kelly.org.au/simple-javascript-function-to-format-the-date-as-yyyy-mm-dd/

6
user1920925

sie können dies versuchen: https://www.npmjs.com/package/timesolver

npm i timesolver

verwenden Sie es in Ihrem Code:

const timeSolver = require('timeSolver');
const date = new Date();
const dateString = timeSolver.getString(date, "YYYY-MM-DD");

Sie können mit dieser Methode eine Datumszeichenfolge abrufen:

getString

Hoffe das wird dir helfen!

4
sean1093

Wenn Sie nichts gegen die Verwendung von Bibliotheken haben; Sie könnten die Bibliothek von moments.js einfach so verwenden ...

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>

4
Nifemi Sola-Ojo

Warum nutzen Sie das nicht einfach

var date = new Date('1970-01-01');  //or your date here
console.log((date.getMonth() + 1) + '/' + date.getDate() + '/' +  date.getFullYear());

Einfach und süß;)

4
Pardeep Jain

Keine dieser Antworten hat mich zufrieden gestellt. Ich wollte eine plattformübergreifende Lösung, die mir den Tag in der lokalen Zeitzone gibt, ohne externe Bibliotheken zu verwenden.

Das ist was ich mir ausgedacht habe:

function localDay(time) {
  var minutesOffset = time.getTimezoneOffset()
  var millisecondsOffset = minutesOffset*60*1000
  var local = new Date(time - millisecondsOffset)
  return local.toISOString().substr(0, 10)
}

Das sollte den Tag des Datums, im Format JJJJ-MM-TT, in der Zeitzone zurückgeben, auf das Datum verweist.

Zum Beispiel wird localDay(new Date("2017-08-24T03:29:22.099Z"))"2017-08-23" zurückgeben, obwohl es bereits UTC 24 ist.

Sie müssen polyfill Date.prototype.toISOString verwenden, damit es im IE8 funktioniert, es sollte jedoch überall unterstützt werden.

3
Erik Pukinskis

Ich schlage vor, etwas wie dieses https://github.com/brightbits/formatDate-js zu verwenden, anstatt es jedes Mal zu replizieren, verwenden Sie einfach eine Bibliothek, die alle wichtigen Strftime-Aktionen unterstützt. 

new Date().format("%Y-%m-%d")
3
Michael Baldry

Um auch die Zeitzone zu berücksichtigen, sollte dieser eine Liner ohne Bibliothek gut sein:

new Date().toLocaleString("en-IN", {timeZone: "Asia/Kolkata"}).split(',')[0]

2
krsoni

var d = new Date("Sun May 1,2014");

var year  = d.getFullYear();
var month = d.getMonth() + 1;
var day   = d.getDate(); 

month = checkZero(month);             
day   = checkZero(day);

var date = "";

date += year;
date += "-";
date += month;
date += "-";
date += day;

document.querySelector("#display").innerHTML = date;
    
function checkZero(i) 
{
    if (i < 10) 
    {
        i = "0" + i
    };  // add zero in front of numbers < 10

    return i;
}
<div id="display"></div>

1
antelove

PHP-kompatibles Datumsformat

Hier ist eine kleine Funktion, die die gleichen Parameter wie die Funktion PHP date() annehmen und eine Datums-/Uhrzeitzeichenfolge in Javascript zurückgeben kann.

Beachten Sie, dass nicht alle Date () - Formatoptionen von PHP unterstützt werden. Sie können das Objekt parts erweitern, um ein fehlendes Format-Token zu erstellen

/** 
 * Date formatter with PHP "date()"-compatible format syntax.
 */
const formatDate = (format, date) => {
  if (!format) { format = 'Y-m-d' }
  if (!date) { date = new Date() }

  const parts = {
    Y: date.getFullYear().toString(),
    y: ('00' + (date.getYear() - 100)).toString().slice(-2),
    m: ('0' + (date.getMonth() + 1)).toString().slice(-2),
    n: (date.getMonth() + 1).toString(),
    d: ('0' + date.getDate()).toString().slice(-2),
    j: date.getDate().toString(),
    H: ('0' + date.getHours()).toString().slice(-2),
    G: date.getHours().toString(),
    i: ('0' + date.getMinutes()).toString().slice(-2),
    s: ('0' + date.getSeconds()).toString().slice(-2)
  }

  const modifiers = Object.keys(parts).join('')
  const reDate = new RegExp('(?<!\\\\)[' + modifiers + ']', 'g')
  const reEscape = new RegExp('\\\\([' + modifiers + '])', 'g')

  return format
    .replace(reDate, $0 => parts[$0])
    .replace(reEscape, ($0, $1) => $1)
}

// ----- EXAMPLES -----
console.log( formatDate() ); // "2019-05-21"
console.log( formatDate('H:i:s') ); // "16:21:32"
console.log( formatDate('Y-m-d, o\\n H:i:s') ); // "2019-05-21, on 16:21:32"
console.log( formatDate('Y-m-d', new Date(2000000000000)) ); // "2033-05-18"
1
Philipp

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()));

1
Luo Jiong Hui

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

1
Andrei

Dies funktionierte für mich, um das aktuelle Datum im gewünschten Format zu erhalten (JJJJJMMTT HH: MM: SS.) 

var d = new Date();
var date1=d.getFullYear()+''+((d.getMonth()+1)<10?"0"+(d.getMonth()+1):(d.getMonth()+1))+''+(d.getDate()<10?"0"+d.getDate():d.getDate());
var time1=(d.getHours()<10?"0"+d.getHours():d.getHours())+':'+(d.getMinutes()<10?"0"+d.getMinutes():d.getMinutes())+':'+(d.getSeconds()<10?"0"+d.getSeconds():d.getSeconds());
print(date1+' '+time1);
1
SaP

Date.js ist dafür großartig.

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

Das Neuformatieren einer Datumsfolge ist ziemlich einfach, z.

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

1
RobG

Formatieren und Ermitteln des maximalen und minimalen Datums aus Hashmap-Daten

var obj = {"a":'2001-15-01', "b": '2001-12-02' , "c": '2001-1-03'};

function findMaxMinDate(obj){
  let formatEncode = (id)=> { let s = id.split('-'); return `${s[0]+'-'+s[2]+'-'+s[1]}`}
  let formatDecode = (id)=> { let s = id.split('/'); return `${s[2]+'-'+s[0]+'-'+s[1]}`}
  let arr = Object.keys( obj ).map(( key )=> { return new Date(formatEncode(obj[key])); });
  let min = new Date(Math.min.apply( null, arr )).toLocaleDateString();
  let max = new Date(Math.max.apply( null, arr )).toLocaleDateString();
  return {maxd: `${formatDecode(max)}`, mind:`${formatDecode(min)}`}
}

console.log(findMaxMinDate(obj));
0
KARTHIKEYAN.A

Ein paar davon waren in Ordnung - aber nicht sehr flexibel. Ich wollte etwas, das wirklich mehr Edge-Fälle bewältigen könnte, also nahm ich die Antwort von @orangleliu und erweiterte sie. 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;
}

Verwendungsbeispiel:

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');
0
m1m1k

Noch eine Kombination der Antworten. Schön lesbar, aber etwas langatmig.

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);
}
0
kadrian

Ich habe die Antwort von Samit Satpute folgendermaßen geändert:

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

0
suleman
new Date(new Date(YOUR_DATE.toISOString()).getTime() - 
                 (YOUR_DATE.getTimezoneOffset() * 60 * 1000)).toISOString().substr(0, 10)
0
Lin

Leicht durch mein date-shortcode package zu erreichen:

const dateShortcode = require('date-shortcode')
dateShortcode.parse('{YYYY-MM-DD}', 'Sun May 11,2014')
//=> '2014-05-11'
0
Kodie Grantham

Keine Bibliothek wird benötigt

Nur reines Javascript

Das Beispiel unten zeigt die letzten zwei Monate ab heute

var d = new Date()
d.setMonth(d.getMonth() - 2);
var dateString = new Date(d);
console.log('Before Format', dateString, 'After format', dateString.toISOString().slice(0,10))
0

Hier ist eine Möglichkeit, dies zu tun:

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));
0
Gergo Erdosi

Wenn das Datum in allen Zeitzonen gleich sein muss, z. B. einen Wert aus der Datenbank darstellt, müssen Sie unbedingt die UTC-Versionen des Tages, des Monats und die vollständigen Funktionen des js-Date-Objekts verwenden, da dies in UTC-Zeit angezeigt wird bestimmte Zeitzonen. Verwenden Sie die moment.js-Datumsbibliothek noch besser für diese Art der Formatierung

0
GameSalutes