如何转换一个特定小时,例如18:00,到毫秒?
我需要这个,所以如果它介于例如12:00和18:00之间我可以做某事,如果不是在12:00到18:00之间,我可以做其他事情。
我得到当前的时间:
Private long time;
time = System.currentTimeMillis();
但我不知道如何将一小时转换为毫秒。
我在互联网上搜索,似乎如果我使用System.currentTimeMillis()
,它会给我当天和小时的毫秒数,但我需要每天更新这样的内容:
今天millis的时间是这样的:1516994140294
。但是这个数字包含:Fri Jan 26 2018 19:15:40
。因此,如果我在今天的12:00和18:00使用millis,这意味着明天它将无法正常工作。
那么你可以帮我一个例子或文档吗?一切都可以帮助我:)并提前感谢。
答案 0 :(得分:1)
LocalTime.now() // Capture current moment. Better to explicitly pass a `ZoneId` object than rely implicitly on the JVM’s current default time zone.
.isBefore( LocalTime.of( 18 , 0 ) ) // Compare the current time-of-day against the limit.
无需计算毫秒数。 Java具有适用于此工作的智能日期时间类,可在Java 8及更高版本中内置的 java.time 包中找到。对于早期的Android,请参阅下面的最后一个项目符号。
无需System.currentTimeMillis()
。 java.time类执行相同的工作。
LocalTime
要获取当前时间,没有日期且没有时区,请使用LocalTime
。
确定当前时间需要一个时区。对于任何给定时刻,时间因区域而异。如果省略,则隐式应用JVM的当前默认时区。最好明确指定您期望/预期的时区,因为默认值可能会在运行时之前或期间的任何时刻发生变化。
以continent/region
的格式指定proper time zone name,例如America/Montreal
,Africa/Casablanca
或Pacific/Auckland
。切勿使用诸如EST
或IST
之类的3-4字母缩写,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。
ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
LocalTime now = LocalTime.now( z ) ;
与方法isBefore
,isAfter
和equals
进行比较。
一种较短的询问方式是等于或晚于中午"是"不是在中午之前"。
boolean isAfternoon =
( ! now.isBefore( LocalTime.NOON ) )
&&
now.isBefore( LocalTime.of( 18 , 0 ) )
;
如果您担心Daylight Saving Time( DST)等异常情况的影响,请探索使用ZonedDateTime
而不仅仅是LocalTime
。
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
答案 1 :(得分:0)
Viola,你的时间是毫秒。
答案 2 :(得分:0)
你应该看看 SimpleDateFormat
有一个很好的教程here
比较两个"日期"您应该了解如何创建Calendar
(或更简化但已弃用的Date
)对象。它实现了可比性,因此您可以将当前时间转换为Date
对象并将其与已知时间戳进行比较(如您的问题中所示):
您可以将Calendar
和Date
设置为特定时间或当前时间。例如,Calendar.setCurrentTimeMillis(System.currentTimeMillis())
会将Calendar
实例设置为当前时间(就像Calendar.getInstance()
)。
以下是Date
的示例:
// This is how to get today's date in Java
Date today = new Date();
//If you print Date, you will get un formatted output
System.out.println("Today is : " + today);
//formatting date in Java using SimpleDateFormat
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd-MM-yyyy");
String date = DATE_FORMAT.format(today);
System.out.println("Today in dd-MM-yyyy format : " + date);
//Another Example of formatting Date in Java using SimpleDateFormat
DATE_FORMAT = new SimpleDateFormat("dd/MM/yy");
date = DATE_FORMAT.format(today);
System.out.println("Today in dd/MM/yy pattern : " + date);
//formatting Date with time information
DATE_FORMAT = new SimpleDateFormat("dd-MM-yy:HH:mm:SS");
date = DATE_FORMAT.format(today);
System.out.println("Today in dd-MM-yy:HH:mm:SS : " + date);
//SimpleDateFormat example - Date with timezone information
DATE_FORMAT = new SimpleDateFormat("dd-MM-yy:HH:mm:SS Z");
date = DATE_FORMAT.format(today);
System.out.println("Today in dd-MM-yy:HH:mm:SSZ : " + date);
从此网站:http://www.java67.com/2013/01/how-to-format-date-in-java-simpledateformat-example.html#ixzz55Jw9BaXW