Java 我可以从毫秒值中获取当前时间值吗

Java 我可以从毫秒值中获取当前时间值吗,java,random,datetime-format,epoch,milliseconds,Java,Random,Datetime Format,Epoch,Milliseconds,我有一个以毫秒为单位的值1601626934449 这是通过 但是,我是否能够以人类可读的格式获取时间,或者简单地说,我需要知道以毫秒为单位的值是多少?您可以创建一个日期对象,并使用它获取所需的所有信息: 您可以将毫秒转换为LocalDateTime来存储时间 long millis = System.currentTimeMillis(); LocalDateTime datetime = Instant.ofEpochMilli(millis)

我有一个以毫秒为单位的值1601626934449

这是通过


但是,我是否能够以人类可读的格式获取时间,或者简单地说,我需要知道以毫秒为单位的值是多少?

您可以创建一个日期对象,并使用它获取所需的所有信息:


您可以将毫秒转换为
LocalDateTime
来存储时间

long millis = System.currentTimeMillis();
LocalDateTime datetime = Instant.ofEpochMilli(millis)
                                .atZone(ZoneId.systemDefault()).toLocalDateTime();
然后,您可以使用
toString()
打印数据,或者使用
DateTimeFormatter
打印所需格式

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.SSS");
System.out.println(datetime.format(formatter));

输出:
2020-10-02 18:39:54.609
在java 8或更高版本上使用
java.time
。使用它,很容易达到您的目标。
基本上,您可以从历元毫秒(表示一个时间点)创建一个
瞬间
,通过应用
ZoneId
(以下示例中我的系统默认设置)将其设置为
zoneDateTime
然后,通过内置的
DateTimeFormatter
格式化输出
String
,或者通过创建一个具有所需模式的自定义格式,使其符合要求的可读性

下面是一个例子:

publicstaticvoidmain(字符串[]args){
//你的例子是米利斯
长电流毫秒=1601626934449L;
//从这些毫秒中创造一个瞬间
瞬发瞬发=瞬发波切米利(电流毫度);
//使用该瞬间和时区以获得合适的datetime对象
ZonedDateTime zdt=ZonedDateTime.ofInstant(instant,ZoneId.systemDefault());
//然后打印它的(隐式调用)toString()方法
System.out.println(currentMillis+“是”+zdt);
//或者通过自定义格式化程序创建不同的人类可读格式
System.out.println(
zdt.format(
DateTimeFormatter.of模式(
“EEEE,dd.“MMMM uuuu”在'HH:mm:ss'o'点处的偏移量为'xxx'小时”,
英语
)
)
);
}
哪些输出(在我的系统上)

1601626934449 is 2020-10-02T10:22:14.449+02:00[欧洲/柏林]
二○○二年五月二日(星期五)。欧洲/柏林2020年10月10:22:14,偏移量为+02:00

是的,请阅读此内容,我建议您不要阅读。
Date
类设计拙劣,过时已久。我们更喜欢使用java.time,现代的java日期和时间API,就像其他两个答案一样。这个问题太普遍了,我甚至没看这个漂亮的答案就投票删除了它。表决删除后,我转向这个答案,但已经晚了,因为它没有提供撤回删除表决的选项。虽然我的许多高质量答案都被浪费了,因为问题被删除了(在结束后),我每次都感到非常难过,但我从未感到沮丧,因为我现在没有撤回删除投票的选择权。我希望没有其他人投票删除这个问题@阿文德库马拉维纳什,我想这是斯塔克沃夫游戏的一部分。所以别担心。。。有趣的是,取消删除投票的可能性缺失,但我们不知道这是不可能的。谢谢你的提醒,在我投票删除一个问题之前,我会记住这一点。