当前位置: 首页 > 面试题库 >

将1904年以来的纳秒转换为有效的Java日期

申屠新觉
2023-03-14
问题内容

我有一个数字,它表示自1904年1月1日上午12:00(世界标准时间)以来的纳秒数。我希望实例化一个java.util.Date代表该日期的对象。我应该如何进行?


问题答案:

首先,您需要将代表 纳秒数字 转换为 毫秒

然后,对于给定的日期字符串,获取自unix时间 Epoch 以来的总毫秒数,然后向其添加更早转换为毫秒的数字。

这是工作代码:

String target = "1904/01/01 12:00 AM";  // Your given date string
long nanoseconds = ...;   // nanoseconds since target time that you want to convert to java.util.Date

long millis = TimeUnit.MILLISECONDS.convert(nanoseconds, TimeUnit.NANOSECONDS);

DateFormat formatter = new SimpleDateFormat("yyyy/MM/dd hh:mm aaa");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = formatter.parse(target);

long newTimeInmillis = date.getTime() + millis;

Date date2 = new Date(newTimeInmillis);

System.out.println(date2);

添加一个import java.util.concurrent.TimeUnit;



 类似资料:
  • 这个问题我已经研究了一段时间,但我只能得到秒数,下面是给我的说明:编写一个程序,从代表纳秒数的标准输入中读取一个非负整数。然后,程序编写一行输出,给出等效的天、小时、分钟、秒、毫秒、微秒和纳秒的数量。例如,输入为123456789123456789。则输出为:123456789123456789纳秒等于1428天、21小时、33分钟、9秒、123毫秒、456微秒和789纳秒。这是我写的: }

  • 问题内容: 我有一个ISO格式的日期YYYY-MM-DDTHH:SS(例如2014-02-14T12:30)。我想在自epoch以来的几秒钟内仅使用linux bash中的date命令将其转换。 所有日期均指UTC语言环境。 我知道这个问题很容易重复…关于将日期从一种格式转换为另一种格式有数十亿个问题,但是我找不到自己的特殊情况 谢谢… 问题答案: 使用GNU date,指定要解析的日期和自epo

  • 问题内容: 我已经为Android应用程序的这段代码苦苦挣扎了一段时间,但我无法理解。我已经阅读并尝试了在stackoverflow和其他地方找到的所有解决方案,但是仍然没有运气。 我想做的是有一个将字符串转换为UTC日期的函数,以及一个将转换为这样的字符串的函数。 这导致:都错了。 我尝试设置为,不走运。 我注意到的另一件事:如果这样做, 它将给我:。 如果有人可以为我提供一些解释/示例代码,我

  • 问题内容: 我有一个等于日期的字符串,表示为自Unix纪元以来的毫秒数。 我正在尝试将其输出到dmY。 我得到的字符串是“ 1227643821310”,并被告知结果应等于 2-12-2008 ,但我不断得到的结果是 25-11-2008 我的代码如下: 关于为什么会这样的任何想法? 问题答案: 您已经做对了,1227643821根本不是2008年12月12日,的确是2008年11月25日。

  • 问题内容: 我对当前UTC时间以毫秒为单位不感兴趣,也无需弄乱时区。我的原始日期已经存储为UTC时间戳。 我在UTC时间“ 2012-06-14 05:01:25”中存储了一个日期。我对日期时间不感兴趣,但对日期部分感兴趣。因此,在用Java检索日期并排除小时,分钟和秒之后,我剩下的是“ 2012-06-14”。 如何将其转换为UTC毫秒? 问题答案: 编辑:我错过了“忽略一天中的时间”部分。它现

  • 问题内容: 如何将值从纳秒转换为秒? 这是代码段: 错误是 这是什么意思? 问题答案: 好吧,您可以除以1,000,000,000: 如果使用转换,结果将很长,因此您将失去小数精度,但保持整数精度。