如何将特定时间转换为毫秒

时间:2018-01-26 19:20:54

标签: java android time milliseconds

如何转换一个特定小时,例如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,这意味着明天它将无法正常工作。

那么你可以帮我一个例子或文档吗?一切都可以帮助我:)并提前感谢。

3 个答案:

答案 0 :(得分:1)

TL;博士

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/MontrealAfrica/CasablancaPacific/Auckland。切勿使用诸如ESTIST之类的3-4字母缩写,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
LocalTime now = LocalTime.now( z ) ;

与方法isBeforeisAfterequals进行比较。

一种较短的询问方式是等于或晚于中午"是"不是在中午之前"。

boolean isAfternoon = 
    ( ! now.isBefore( LocalTime.NOON ) ) 
    && 
    now.isBefore( LocalTime.of( 18 , 0 ) )
;

如果您担心Daylight Saving Time( DST)等异常情况的影响,请探索使用ZonedDateTime而不仅仅是LocalTime

关于java.time

java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

从哪里获取java.time类?

答案 1 :(得分:0)

  1. 按':'分割当前时间分隔符。第一个是小时,第二个是分钟,第三个是秒。
  2. 将小时数转换为分钟数。也就是说,18 * 60。
  3. 在这种情况下,将上述答案添加到当前分钟(18 * 60 + 00)。
  4. 取上述答案并乘以60秒((18 * 60 + 00)* 60)。
  5. 再次,取上述内容,并在这种情况下添加你的秒数((18 * 60 + 00)* 60 + 00)。
  6. 再次,取上述内容,乘以1000毫秒(((18 * 60 + 00)* 60 + 00)* 1000)。
  7. Viola,你的时间是毫秒。

答案 2 :(得分:0)

你应该看看 SimpleDateFormat

有一个很好的教程here

比较两个"日期"您应该了解如何创建Calendar(或更简化但已弃用的Date)对象。它实现了可比性,因此您可以将当前时间转换为Date对象并将其与已知时间戳进行比较(如您的问题中所示):

Jave Calendar Java Date

您可以将CalendarDate设置为特定时间或当前时间。例如,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