猫史档案馆


【代码】将GMT时间本地化为北.京时间(自带翻译)

用户:星星上的雪花星星上的雪花查看:2 回复:3 评论:2 创建时间:2022-02-01T19:38:58


众所周知,new Date() 返回的是英.国格林威治时间,而我们(除非你不在中国大陆地区)的时间是东八区(GMT + 8:00),比程序获取的时间早8小时。把时间本地化且翻译,就用下面的代码吧:

class BJTime {
    /**
     * Get BeiJing Time as string
     * @param {Number | void} ts  GMT时间戳,不填则返回调用时间
     */
    constructor(ts){
        if(!ts || ts == undefined){
            var value = String(new Date(new Date().getTime()+28800000)).slice(0,String(new Date(new Date().getTime()+28800000)).indexOf("GMT"));
        }else{
            var value = String(new Date(ts+28800000)).slice(0,String(new Date(ts+28800000)).indexOf("GMT"));
        };
        // world.say(value);
        var time = value.toString().slice(11,15) + " 年 ";
        if(value.includes("Jan"))time += "一月";
        else if(value.includes("Feb"))time += "二月";
        else if(value.includes("Mar"))time += "三月";
        else if(value.includes("Apr"))time += "四月";
        else if(value.includes("May"))time += "五月";
        else if(value.includes("Jun"))time += "六月";
        else if(value.includes("Jul"))time += "七月";
        else if(value.includes("Aug"))time += "八月";
        else if(value.includes("Sep"))time += "九月";
        else if(value.includes("Oct"))time += "十月";
        else if(value.includes("Nov"))time += "冬月";
        else if(value.includes("Dec"))time += "腊月";
        time += value.toString().slice(7,10) + " 日 ";
        if(value.includes("Sun"))time += "周日";
        else if(value.includes("Mon"))time += "周一";
        else if(value.includes("Tue"))time += "周二";
        else if(value.includes("Wed"))time += "周三";
        else if(value.includes("Thu"))time += "周四";
        else if(value.includes("Fri"))time += "周五";
        else if(value.includes("Sat"))time += "周六";
        time += value.toString().slice(15);
        this.time = time;
        this.key = time.split(/ /); 
    }
    /** 以字符串形式返回时间 */
    toString(){
        return new String(this.time)
    }
    /** 获取年份(字符串) */
    getFullYear(){
        return this.key[0]
    }
    /** 获取月份(字符串) */
    getMonth(){
        return this.key[2]
    }
    /** 获取在月份中的日期(字符串) */
    getDate(){
        return this.key[3]
    }
    /** 获取在一周中的星期(中文字符) */
    getDay(){
        return this.key[5]
    }
    /** 获取24小时制时刻(HH:MM:SS) */
    getTime(){
        return this.key[6]
    }
}

具体调用方法是这样的:

//获取现在时间
const time = new BJTime();
//获取特定时间
const time = new BJTime(/*GMT的时间戳*/);

world.say(
    `年:${time.getFullYear()}
    月:${time.getMonth()}
    日:${time.getDate()}
    星期:${time.getDay()}
    时刻:${time.getTime()}
    全部字符串化:${time.toString()}
    `
)

代码仅供学习及使用,不可抄袭或盗用


回复

上一页1 页 / 共 1下一页
星星上的雪花星星上的雪花

自古沙发归我

点赞0


评论


./'./'

板凳!!!!!!!!!!!

点赞0


评论


YDS尹子YDS尹子

你可以试着把这个时间和岛三的太阳关联起来

(例:)

//setInterval在开始的时候不会运行,所以开始的时候要先写一遍

    var time = new Date().toString().split(" ")[4].split(":");
    time[0] = (time[0] * 1 + 8) % 24;
    var timetotal = time[0] * 60 + time[1] * 1;
    world.sunPhase = (0.75 + timetotal / 360 * 0.25) % 1;
//setInterval主循环部分,一分钟检测一次时间
setInterval(() => {
    var time = new Date().toString().split(" ")[4].split(":");
    time[0] = (time[0] * 1 + 8) % 24;
    var timetotal = time[0] * 60 + time[1] * 1;
    world.sunPhase = (0.75 + timetotal / 360 * 0.25) % 1;


}, 60000)

点赞0


评论