java - 我如何获得自纪元以来经过的微秒长(时间),然后在 Java 8 中从同一时间获得月份和年份
问题描述
我找到了这段代码:
long timeStampSeconds = ChronoUnit.MICROS.between(Instant.EPOCH, Instant.now());
但是当我使用以下代码将其转换回获取月份和年份时,它给出了错误的输出。
try {
epochLong = Long.parseLong(epoch);
} catch (RuntimeException e) {
//Log exception
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(epochLong);
String month = String.valueOf(cal.get(Calendar.MONTH));
String year = String.valueOf(cal.get(Calendar.YEAR));
//print month and year
关于如何在微秒内生成它并获得正确月份和年份的任何指示?请帮忙。
解决方案
如果您使用java.time
的是 Java-8,则可以使用:
long timeStampSeconds = ChronoUnit.MICROS.between(Instant.EPOCH, Instant.now());
回退,您可以将其转换为瞬间,然后将瞬间转换为ZoneDateTime
Instant inst = Instant.EPOCH.plus(timeStampSeconds, TimeUnit.MICROSECONDS.toChronoUnit());
ZonedDateTime zdt = inst.atZone(ZoneId.of("Europe/Paris"));
然后你可以得到月,年,日,小时,...
Month month = zdt.getMonth();
int year = zdt.getYear();
输出
MICROS: 1574073141066090
ZoneDateTime: 2019-11-18T11:32:21.066090+01:00[Europe/Paris]
推荐阅读
- python - 如何添加变量
- android - 选择与 TouchableOpacity 相同时如何自定义按钮或视图?
- django - 上传文件时,有什么方法可以绕过托管我的 Django 站点的服务器,而是立即上传到 S3?
- php - 如何用PHP中的html标签替换括号中的一些单词?
- visual-studio-2017 - Visual Studio Q# IDE 中的自动代码完成?
- postgresql - 如何创建访问 CTE 表内 IF 语句的 PostgreSQL UPSERT 函数?
- apache-kafka - Kafka Stream:最终结果立即发出?
- visual-studio-code - 如何在调试控制台中禁用线程消息?
- mongodb - 无法在课程猫鼬中设置对用户文档的引用
- python - Spark 到 MongoDB 的连接在没有有意义的错误的情况下关闭