【问题标题】:Formatting Hijri and Gregorian Date格式化回历和公历日期
【发布时间】:2017-01-02 09:13:02
【问题描述】:

我得到了回历+公历日期的 javascript 代码。我想把回历日期放在第一位,然后是这样的公历:

Senin,2017 年 1 月 2 日 M / 3 Rabiul Tsani 1438 H
Senin,3 Rabiul Tsani 1438 H / 2 Januari 2017 M

请帮助我,因为我无法编辑 javascript 代码。 这是代码:

var fixd;

function isGregLeapYear(year) {
    return year%4 == 0 && year%100 != 0 || year%400 == 0;
}

function gregToFixed(year, month, day) {
    var a = Math.floor((year - 1) / 4);
    var b = Math.floor((year - 1) / 100);
    var c = Math.floor((year - 1) / 400);
    var d = Math.floor((367 * month - 362) / 12);

    if (month <= 2)
        e = 0;
    else if (month > 2 && isGregLeapYear(year))
        e = -1;
    else
        e = -2;

    return 1 - 1 + 365 * (year - 1) + a - b + c + d + e + day;
}

function Hijri(year, month, day) {
    this.year = year;
    this.month = month;
    this.day = day;
    this.toFixed = hijriToFixed;
    this.toString = hijriToString;
}

function hijriToFixed() {
    return this.day + Math.ceil(29.5 * (this.month - 1)) + (this.year - 1) * 354 + Math.floor((3 + 11 * this.year) / 30) + 227015 - 1;
}

function hijriToString() {
    var months = new Array("Muharram","Safar","Rabiul Awwal","Rabiul Tsani","Jumadil Ula","Jumadil Tsani","Rajab","Sya\'ban","Ramadhan","Syawwal","Dzul Qa\'dah","Dzul Hijjah");
    return this.day + " " + months[this.month -1]+ " " + this.year;
}

function fixedToHijri(f) {
    var i=new Hijri(1100, 1, 1);
    i.year = Math.floor((30 * (f - 227015) + 10646) / 10631);
    var i2=new Hijri(i.year, 1, 1);
    var m = Math.ceil((f - 29 - i2.toFixed()) / 29.5) + 1;
    i.month = Math.min(m, 12);
    i2.year = i.year;
    i2.month = i.month;
    i2.day = 1;
    i.day = f - i2.toFixed() + 1;
    return i;
}

var tod=new Date();
var weekday=new Array("Ahad","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu");
var monthname=new Array("Januari","Februari","Maret","April","Mei"," Juni","Juli","Agustus","September","Oktober","November","Desember");

var y = tod.getFullYear();
var m = tod.getMonth();
var d = tod.getDate();
var dow = tod.getDay();
document.write(weekday[dow] + ", " + d + " " + monthname[m] + " " + y);
m++;
fixd=gregToFixed(y, m, d);
var h=new Hijri(1421, 11, 28);
h = fixedToHijri(fixd);
document.write(" M / " + h.toString() + " H &nbsp;&nbsp;");

【问题讨论】:

    标签: javascript date hijri


    【解决方案1】:

    终于可以自己编辑了,哈哈哈,虽然我不是程序员。 谢谢您的回答。如果有人想使用此代码,我会在这里分享。

    function isGregLeapYear(year) 
    { 
    return year%4 == 0 && year%100 != 0 || year%400 == 0; 
    }
    
    function gregToFixed(year, month, day) 
    {
    var a = Math.floor((year -1) / 4); 
    var b = Math.floor((year - 1) / 100); 
    var c = Math.floor((year - 1) / 400); 
    var d = Math.floor((367 * month - 362) / 12); 
    
    if (month <= 2) 
    e = 0; 
    else if (month > 2&& isGregLeapYear(year)) 
    e = -1; 
    else e = -2; 
    return 1 - 1 + 365 * (year - 1) + a - b + c + d + e + day; 
    } 
    
    function Hijri(year, month, day) 
    { 
    this.year = year; 
    this.month = month; 
    this.day = day; 
    this.toFixed = hijriToFixed; 
    this.toString = hijriToString; 
    } 
    function hijriToFixed() 
    { 
    return this.day +Math.ceil(29.5 * (this.month - 1)) +(this.year - 1) * 354 + 
    Math.floor((3 + 11* this.year) / 30) + 227015 - 1; 
    } 
    function hijriToString() 
    { 
    var months = new Array("Muharram","Safar","Rabiul Awal","Rabiul Akhir","Jumadil Awal","Jumadil Akhir","Rajab","Sya'ban","Ramadhan","Syawal","Zulqai'dah","Zulhijjah"); 
    return this.day + " " +months[this.month -1]+ " " + this.year; 
    } 
    function fixedToHijri(f) 
    { 
    var i=new Hijri(1100, 1, 1); 
    i.year = Math.floor((30 * (f - 227015) + 10646) / 10631); 
    var i2=new Hijri(i.year, 1, 1); 
    var m = Math.ceil((f - 29- i2.toFixed()) / 29.5) + 1; 
    i.month = Math.min(m, 12); 
    i2.year = i.year; 
    i2.month = i.month; 
    i2.day = 1; i.day = f - i2.toFixed() + 1; 
    return i; 
    } 
    var tod=new Date(); 
    var weekday=new Array ("Ahad","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"); 
    var monthname=new Array("Januari","Februari","Maret","April","Mei"," Juni","Juli","Agustus","September","Oktober","November","Desember"); 
    var y = tod.getFullYear(); 
    var m = tod.getMonth(); 
    var d = tod.getDate(); 
    var dow = tod.getDay(); 
    document.write(weekday[dow] + ", "); 
    m++; 
    fixd=gregToFixed(y, m, d); 
    var steve=new Hijri(1421, 11, 28); 
    steve = fixedToHijri(fixd); 
    document.write(" " + steve.toString() + "&nbsp;&nbsp;");
    document.write("/" + " " + d + " " + monthname[m] + " " + y);
    m++;

    【讨论】:

      猜你喜欢
      • 2017-03-04
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多