How do you convert a Unix timestamp to Jalali/Shamsi/Persian format?

后端 未结 3 1804
我在风中等你
我在风中等你 2021-01-02 22:44

I\'m developing a web App and I have a unix timeStamp. I need to convert a unix date format to Jalali/Persian/Shamsi Calendar by using jQuery selectors and then convert it b

相关标签:
3条回答
  • 2021-01-02 23:36

    you can use toLocalDateString()

    let mydate = new Date(timestamp);
    let mypersiandate = mydate.toLocaleDateString('fa-IR');
    console.log(mypersiandate);
    
    0 讨论(0)
  • 2021-01-02 23:42

    I have these simple functions:

    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
    
    0 讨论(0)
  • 2021-01-02 23:46

    I would suggest using moment.js (https://momentjs.com/) which is reliable JavaScript Time library that allows you to format your timestamp in JavaScript. Below is an example of how you can parse a timestamp and format it to whatever you want using it.

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

    You also tagged localization which can be done by using;

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

    More examples can be found on there website.

    This in conjunction with https://www.npmjs.com/package/jalali-date will get you your jalali date.

    There is a moment.js extension for Persian here also https://www.npmjs.com/package/moment-jalaali (From moment to Jalali)

    Another Jalali conversion library https://www.npmjs.com/package/jalaali-js (To Jalai)

    An example fiddle using moment.js Jalali conversion from Unix Timestamp https://jsfiddle.net/uw82ozpd/9/

    Relevant code snippet with comments:

    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);
    
    });
    
    0 讨论(0)
提交回复
热议问题