回答
在 Hamibot 开发中,可以通过 JavaScript 的 Date
对象获取当前时间,包括北京时间(UTC+8)。以下是一个完整的脚本示例,用于获取并输出当前的北京时间,精确到毫秒:
// 文档地址 https://docs.hamibot.com/
var now = new Date();
var utcTime = now.getTime(); // 获取当前时间的毫秒数(UTC 时间)
var offset = 8 * 60 * 60 * 1000; // 北京时间比 UTC 时间快 8 小时,转换为毫秒
var beijingTime = new Date(utcTime + offset);
// 输出北京时间
toastLog("当前北京时间: " + beijingTime.toLocaleString());
说明:
new Date()
创建一个表示当前时间的日期对象。getTime()
返回从 1970 年 1 月 1 日 00:00:00 UTC 到现在的毫秒数。offset
是将 UTC 时间转换为北京时间所需的偏移量(8 小时)。beijingTime
是一个表示北京时间的日期对象。toLocaleString()
将日期对象转换为本地时间格式的字符串。
这个脚本会在设备上显示当前的北京时间,并且精确到毫秒。
补充回答 1
如果需要从国家时间服务器获取标准北京时间,可以使用 http
模块发起 HTTP 请求来获取网络时间。以下是一个完整的脚本示例:
// 文档地址 https://docs.hamibot.com/
var url = "http://www.beijing-time.org/time/utcjson.asp"; // 国家时间服务器的 URL
// 发起 HTTP GET 请求
var res = http.get(url);
// 检查请求是否成功
if (res.statusCode == 200) {
var data = res.body.string();
var json = JSON.parse(data);
// 获取 UTC 时间(以毫秒为单位)
var utcTime = json.utc;
// 北京时间比 UTC 时间快 8 小时
var beijingTime = utcTime + 8 * 60 * 60 * 1000;
// 转换为日期对象
var date = new Date(beijingTime);
// 输出北京时间
toastLog("当前北京时间: " + date.toLocaleString());
} else {
toastLog("无法获取北京时间,HTTP 状态码: " + res.statusCode);
}
说明:
- 使用了
http.get()
方法向国家时间服务器发送请求。 - 从返回的数据中解析出 UTC 时间(以毫秒为单位)。
- 将 UTC 时间加上 8 小时的毫秒数,得到北京时间。
- 最后将北京时间转换为可读格式并输出。
注意:由于网络请求可能受到防火墙或网络环境的影响,如果无法访问该 URL,可能需要更换为其他可用的时间服务器。
ℹ️ 本回答由 AI 生成,内容仅供参考