当前位置: 首页 > 知识库问答 >
问题:

Java和Arduino,获得与时区无关的历元时间[重复]

丁灿
2023-03-14

我有一个连接到java web服务器的Arduino程序,我需要同步时间。但存在一小时同步问题。

这个Java程序的输出:

public class Test {
  public static void main(String[] args) {
    java.util.Date d = new java.util.Date(2018-1900, 11-1, 22, 05, 48, 10); // 22th Nov 2018, 05:48:10
    System.out.println(d);

    long t = d.getTime() / 1000;
    System.out.println(t);
  }
}
Thu Nov 22 05:48:10 CET 2018
1542862090
Enter a Timestamp: 1542862090 -> Convert -> 
Timestamp Converter: 1542862090 Is equivalent to: 11/22/2018 @ 4:48am (UTC)

相反,使用此库在Arduino中运行等效程序:

#include <RtcDS3231.h>
void setup() {
  Serial.begin(115200);
  RtcDateTime date = RtcDateTime(2018, 11, 22, 05, 48, 10); // 22th Nov 2018, 05:48:10
  uint32_t t = date.Epoch32Time();
  Serial.println(t);
}

输出为:1542865690

然后,我查看https://www.unixtimestamp.com/输入时间戳:1542865690->Convert->

Timestamp Converter: 1542865690 Is equivalent to: 11/22/2018 @ 5:48am (UTC)
  RtcDateTime date = RtcDateTime(0);
  date2.InitWithEpoch32Time(t);
  Serial.println(date.Hour());   // 4

我如何在Java中获得正确的纪元时间,独立于时区?或者,Java结果是正确的,arduino库是错误的吗?我错过了什么?

共有1个答案

巴英韶
2023-03-14

java Date构造函数不推荐使用,对您更重要的是,它使用本地时间。所以我猜测您的java机器位于距离UTC一小时的地方。

 类似资料:
  • 我写了一个代码来获取迪拜当前时间。但我正在获取系统当前时间作为回报 下面是我一直在使用的代码 加利福尼亚州。getTime()始终返回系统时间。 我目前在印度。所以这个日历实例总是返回印度时间。 如何获取迪拜当前时间

  • 我正在尝试获取PST时区中一天的开始时间(00:00:00)和结束时间(23:59:59)。我尝试了以下代码,但由于某种原因,我只获取UTC中的开始和结束时间。我尝试将时区更改为包括“美国/Los_angeles”,但输出时间戳始终显示GMT/UTC的开始和结束时间。 我的代码: 输出: 我这里有什么遗漏吗?我应该更新任何包吗。?

  • 当我记录这段代码时,我得到了两个输出: 我得到了这些日志: 是否丢失了其原始时区? 我怎么会在乎呢?

  • 我是sqlite3新手,我创建了一个名为result的sqlite3数据库,它有一个_时间表,根据我从Splunk查询的历元时间列出IP地址。我试图从sqlite3数据库中获取基于_time(历元时间)表的数据。 以下是sqlite3数据库中列出的_时间和IP地址的副本: 问题是,不管我尝试过什么命令,它总是输出所有的IP地址。我只需要x天数(30天前)的IP地址。我在网上看了很多例子,但仍然没有

  • 我正在开发一个带有MySQL数据库的Java应用程序,该数据库位于与我的服务器不同的时区,我正试图决定在我的数据库上使用DATETIME还是TIMESTAMP。 在阅读了诸如我应该使用字段'datetime'还是'TIMESTAMP'之类的问题,以及MySQL文档之后,我认为TIMESTAMP更适合我,因为它将值转换为UTC以存储,并返回到当前时区以进行检索。 此外,正如用户Jesper在本文中所

  • 问题内容: 我正在使用JavaScript类,并尝试使用方法获取当前日期。但显然是加载系统日期和时间。我正在从印度运行代码,但我想使用相同的方法来获取英国的日期和时间。我怎样才能做到这一点? 问题答案: 如果您知道UTC偏移量,则可以使用以下函数传递它并获取时间: