Wie konvertiert man einen Unix-Zeitstempel in das Format Jalali/Shamsi/Persisch?

Lesezeit: 4 Minuten

Benutzer-Avatar
Mojtaba Reyhani

Ich entwickle eine Web-App und habe einen Unix-Zeitstempel. Ich muss ein Unix-Datumsformat mithilfe von jQuery-Selektoren in Jalali/Persian/Shamsi-Kalender konvertieren und es dann mithilfe der Javascript-Bibliothek konvertieren.
So etwas wie der folgende Code zum Konvertieren Unix-Date zu Jalali-Date:

<html>
  <head>
  <meta charset="utf-8">
  </head>

  <body>
  <div class="Unix-Date">1494259627</div> <!-- Unix equal of 1396/2/18 -->
  <div class="Jalali-Date"></div>

  <script src="https://stackoverflow.com/questions/43850436/jquery.js"></script>
  <script src="external-library.js"></script>
  <script>
  $(document).ready(function() {
  var UnixValue;
  var JalaliValue;
  UnixValue = $(".Unix-Date").html();
  JalaliValue = new JalaliExternalFunction(UnixValue);
  $(".Jalali-Date").text(JalaliValue);
  });
  </script>
  </body>
</html>

Ich habe gesucht, aber keine gute Bibliothek gefunden. Kennen Sie eine zuverlässige und gute Bibliothek zum Konvertieren (oder Erstellen von Daten im Jalali-Format aus einem Unix-Zeitstempel). Ich brauche weder Ihre Implementierung noch einen Algorithmus, da dieses Problem zu fehlerhaft ist und viele Regeln enthält. Ich brauche eine zuverlässige Lösung.

Dank

Benutzer-Avatar
li x

Ich würde die Verwendung vorschlagen moment.js (https://momentjs.com/) Dies ist eine zuverlässige JavaScript-Zeitbibliothek, mit der Sie Ihren Zeitstempel in JavaScript formatieren können. Nachfolgend finden Sie ein Beispiel dafür, wie Sie einen Zeitstempel parsen und ihn so formatieren können, wie Sie ihn verwenden möchten.

//formatting Unix timestamp.
var date = moment.unix(value).format("MM/DD/YYYY");

Sie haben auch die Lokalisierung getaggt, die mit durchgeführt werden kann;

 var localeDate = moment(date).locale("LT");

Weitere Beispiele finden Sie auf der Website.

Dies in Verbindung mit https://www.npmjs.com/package/jalali-date wird Ihnen Ihr Jalali-Date besorgen.

Hier gibt es auch eine moment.js-Erweiterung für Persisch https://www.npmjs.com/package/moment-jalaali (Von Moment zu Jalali)

Eine weitere Jalali-Konvertierungsbibliothek https://www.npmjs.com/package/jalaali-js (zu Jalai)

Eine Beispielgeige mit moment.js Jalali-Konvertierung von Unix Timestamp https://jsfiddle.net/uw82ozpd/9/

Relevanter Codeausschnitt mit Kommentaren:

var UnixValue;
var JalaliValue;

$(document).ready(function() {

//get the Unix Date from HTML
var UnixValue = $(".Unix-Date").html();

//Get a moment timestamp in the format simmilar to our next conversion
var date = moment.unix(UnixValue).format("MM/DD/YY");

//Convert from normal moment to our jalali moment exstension using j's as below
var JalaliValue = moment(date).format('jYYYY/jM/jD');

$(".Jalali-Date").text(JalaliValue);

});

  • Vielen Dank für Ihre Hilfe und Antwort, aber es scheint so moment.js Übersetzen Sie nur den Tag und den Mount-Namen ins Persische und das Datum bleibt weiterhin im Gregorianischen.

    – Mojtaba Reyhani

    8. Mai 2017 um 15:01 Uhr

  • Es stellt sich heraus, dass es auch eine Momenterweiterung für Persisch gibt, die die Antwort aktualisiert.

    – li x

    8. Mai 2017 um 15:05 Uhr

  • Ich werde weiterhin Bibliotheken hinzufügen, die meiner Meinung nach nützlich sein könnten. Lassen Sie mich wissen, ob eine davon für Sie funktioniert!

    – li x

    8. Mai 2017 um 15:08 Uhr

  • Es ist wahrscheinlich, dass das sehr große Skript, das ich in das HTML eingefügt habe, dazu geführt hat, dass es aus jsfiddle entfernt wurde. Der Code für Moment Jilali kann hier gefunden werden github.com/jalaali/moment-jalaali/blob/master/build/… Kopieren Sie das und speichern Sie es in Ihrem Verzeichnis und verwenden Sie es dann <script src="jalali-js.js"></script> (Stellen Sie sicher, dass Sie die JS-Datei als jalali-js”) Befolgen Sie anschließend die Anweisungen zu meiner Antwort 🙂

    – li x

    8. Mai 2017 um 17:51 Uhr


  • Sie müssen auch das Basismoment js einschließen, was Sie durch Einschließen tun können <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script> in Ihrem html.

    – li x

    8. Mai 2017 um 17:53 Uhr

Sie können toLocalDateString() verwenden

let mydate = new Date(timestamp);
let mypersiandate = mydate.toLocaleDateString('fa-IR');
console.log(mypersiandate);

Ich habe diese einfachen Funktionen:

function convertTimeStampToJalali(timestamp){
    var date = new Date(timestamp);
    if(!date)
        return false;
    return ( gregorian_to_jalali(date.getFullYear(),(date.getMonth()+1),date.getDate()) );
}//end of function convertTimeStampToJalali

function gregorian_to_jalali(gy,gm,gd){
    g_d_m=[0,31,59,90,120,151,181,212,243,273,304,334];
    if(gy > 1600){
        jy=979;
        gy-=1600;
    }else{
        jy=0;
        gy-=621;
    }
    gy2=(gm > 2)?(gy+1):gy;
    days=(365*gy) +(parseInt((gy2+3)/4)) -(parseInt((gy2+99)/100)) +(parseInt((gy2+399)/400)) -80 +gd +g_d_m[gm-1];
    jy+=33*(parseInt(days/12053)); 
    days%=12053;
    jy+=4*(parseInt(days/1461));
    days%=1461;
    if(days > 365){
        jy+=parseInt((days-1)/365);
        days=(days-1)%365;
    }
    jm=(days < 186)?1+parseInt(days/31):7+parseInt((days-186)/30);
    jd=1+((days < 186)?(days%31):((days-186)%30));
    return [jy,jm,jd];
}//end of function gregorian_to_jalali

1017820cookie-checkWie konvertiert man einen Unix-Zeitstempel in das Format Jalali/Shamsi/Persisch?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy