949 Stimmen

Parsing einer Zeichenkette zu einem Datum in JavaScript

Wie kann ich in JavaScript eine Zeichenkette in ein Datumsobjekt umwandeln?

var st = "date in some format"
var dt = new Date();

var dt_st = // st in Date format, same as dt.

0voto

Jonathan Applebaum Punkte 5139

Ich schrieb eine wiederverwendbare Funktion, die ich verwende, wenn ich Datumszeichenfolgen vom Server erhalte.
können Sie das gewünschte Trennzeichen (/ - usw.) übergeben, das Tag, Monat und Jahr trennt, um die split() Methode.
Sie können es auf dieser Seite sehen und testen Arbeitsbeispiel .

<!DOCTYPE html>
<html>
  <head>
    <style>
    </style>
  </head>
  <body>
    <div>
      <span>day:
      </span> 
      <span id='day'>
      </span>
    </div>
    <div>
      <span>month:
      </span> 
      <span id='month'>
      </span>
    </div>
    <div>
      <span>year:
      </span> 
      <span id='year'>
      </span>
    </div>
    <br/>
    <input type="button" id="" value="convert" onClick="convert('/','28/10/1980')"/>
    <span>28/10/1980
    </span>
    <script>
      function convert(delimiter,dateString)
      {
        var splitted = dateString.split('/');
        // create a new date from the splitted string 
        var myDate = new Date(splitted[2],splitted[1],splitted[0]);
        // now you can access the Date and use its methods 
        document.getElementById('day').innerHTML = myDate.getDate();
        document.getElementById('month').innerHTML = myDate.getMonth();
        document.getElementById('year').innerHTML = myDate.getFullYear();
      }
    </script>
  </body>
</html>

0voto

jo_va Punkte 12641

Eine andere Möglichkeit besteht darin, eine Regex mit benannten Erfassungsgruppen über der Formatzeichenkette zu erstellen und dann diese Regex zu verwenden, um Tag, Monat und Jahr aus der Datumszeichenkette zu extrahieren:

function parseDate(dateStr, format) {
  const regex = format.toLocaleLowerCase()
    .replace(/\bd+\b/, '(?<day>\\d+)')
    .replace(/\bm+\b/, '(?<month>\\d+)')
    .replace(/\by+\b/, '(?<year>\\d+)')

  const parts = new RegExp(regex).exec(dateStr) || {};
  const { year, month, day } = parts.groups || {};
  return parts.length === 4 ? new Date(year, month-1, day) : undefined;
}

const printDate = x => console.log(x ? x.toLocaleDateString() : x);

printDate(parseDate('05/11/1896', 'dd/mm/YYYY'));
printDate(parseDate('07-12-2000', 'dd-mm-yy'));
printDate(parseDate('07:12:2000', 'dd:mm:yy'));
printDate(parseDate('2017/6/3', 'yy/MM/dd'));
printDate(parseDate('2017-6-15', 'y-m-d'));
printDate(parseDate('2015 6 25', 'y m d'));
printDate(parseDate('2015625', 'y m d')); // bad format

0voto

Pec1983 Punkte 326
                //little bit of code for Converting dates 

                var dat1 = document.getElementById('inputDate').value;
                var date1 = new Date(dat1)//converts string to date object
                alert(date1);
                var dat2 = document.getElementById('inputFinishDate').value;
                var date2 = new Date(dat2)
                alert(date2);

0voto

var parts ='2022-07-23'.split('-'); 
console.log(parts[2]+"-"+parts[1]+"-"+parts[0]);

Es ist eine sichere Methode, die gleichzeitig voll modular ist (einfach tt/mm/jjjj in mm/tt/jjjj usw. ändern). Funktioniert mit verschiedenen Begrenzungszeichen wie "/" und so weiter.

Die oben genannten Ergebnisse:

23-07-2022

-3voto

Avishai Punkte 3

Sie können auch tun: mydate.toLocaleDateString();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X