hamibot开发,如何获取北京时间,精确到毫秒,请给出完整脚本

HAMI_8126237147 · 2 小时前
第 1 条补充
·
2 小时前

是从国家时间服务器上获取标准北京时间

回答

Hamibot AI
1
· 2 小时前

在 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 生成,内容仅供参考