我试图从System.currentTimeMillis()
获取当前时间,但我似乎无法弄清楚如何,我尝试将毫秒的时间除以1000,我想这给了我几秒钟,但我想得到当前小时的价值。我想如果我做这个时间(ms)/ 1000然后结果/ 3600?是吗 ?
请指教。
答案 0 :(得分:2)
SimpleDateFormat df = new SimpleDateFormat("hh:mm");
String time = df.format(new Date(System.currentTimeMillis()));
答案 1 :(得分:2)
ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )
.getHour();
问题和其他答案使用现在由java.time取代的麻烦的旧遗留日期时间类。
以UTC格式获取当前时刻。
Instant instant = Instant.now();
申请时区。在任何特定时刻,日期和时间在全球范围内因地区而异。
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.at( z );
询问小时。
int hourOfDay = zdt.getHour();
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧日期时间类,例如java.util.Date
,.Calendar
和& java.text.SimpleDateFormat
。
现在位于Joda-Time的maintenance mode项目建议迁移到java.time。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。
大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并进一步适应Android中的ThreeTenABP(见How to use…)。
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
等。
在评论中,您提到希望将时间跟踪为epoch的毫秒数。
出于多种原因,我强烈建议不要这样做。它使调试变得非常困难,因为人类无法读取长整数并破译日期时间的含义。所以bug可能不会被发现。来自时代的计数不是自我记录的,并且接收者可能对其含义感到困惑。有些人从纪元开始计算整秒,其他人则是毫秒,其他微秒,其他纳秒,还有一些人使用其他粒度。至于时代,哪一个?在各种计算系统中,有couple dozen different points时间用作时期参考。
但是如果你坚持使用自1970年开始的时期(UTC 1970-01-01T00:00:00
)以来的毫秒数,请从Instant
生成此数字。
long millisecondsSinceEpochOf1970 = Instant.now().toEpochMilli() ;
相反,我建议......在将日期时间值作为字符串交换时,请使用标准ISO 8601格式。这些格式是人类可读的,即使在各种文化中也是直观的,自我记录,可识别,易于解析和明智。
通常您应该使用UTC。 UTC值的ISO 8601格式在末尾规范地使用Z
,Zulu
的缩写,表示UTC。
2016-09-16T20:46:01Z
在Instant
类中解析/生成字符串时,默认使用此格式。
Instant.parse( "2016-09-16T20:46:01Z" )
myInstant.toString() // Result: 2016-09-16T20:46:01Z
答案 2 :(得分:1)
使用Calendar
int hourOfDay = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
答案 3 :(得分:1)
如果你想要直接数学路线,你会想要使用除法和模数。
long x = System.currentTimeMillis();
System.out.println("Seconds " + x/1000);
x /= 1000;
System.out.println("Minutes " + x/60);
x /= 60;
System.out.println("Hours " + x/60);
x /= 60;
System.out.println("Hours (24hr) UTC - " + x%24);
System.out.println("Hours (12hr) UTC - " + x%12);
这将产生以下输出(此时为UTC时间下午7:50)
Seconds 1425930629
Minutes 23765510
Hours 396091
Hours (24hr) UTC - 19
Hours (12hr) UTC - 7