用户:
星星上的雪花查看: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()}
`
)
代码仅供学习及使用,不可抄袭或盗用
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
评论