【问题标题】:How to convert time into milliseconds?如何将时间转换为毫秒?
【发布时间】:2014-04-16 21:32:20
【问题描述】:

我很困惑如何将给定的时间(例如晚上 9:30)转换为毫秒,因为如果它超过了某个时间,我需要运行代码。我已经知道如何通过以下代码获取当前时间(以毫秒为单位):

long timestamp = System.currentTimeMillis();

但是我如何将晚上 9:30 转换为毫秒?我已经研究了几个小时,但似乎只能找出如何获取当前时间。

我的应用程序需要检查现在是晚上 9:30 还是过去,如果是,则运行 toast 消息。

【问题讨论】:

标签: java android time milliseconds


【解决方案1】:

在 Android 上最快且正确的方法是使用日历。您可以将 Calendar 实例设为静态并在需要时重用它。

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR, 9);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.AM_PM, Calendar.PM);
long timeInMillis = calendar.getTimeInMillis();

【讨论】:

    【解决方案2】:

    我不需要以毫秒为单位检查时间,您可以使用 Calendar 类将当前时间与所需值进行比较:

    Calendar calendar = Calendar.getInstance();
    int hour = calendar.get(Calendar.HOUR_OF_DAY);
    int minute = calendar.get(Calendar.MINUTE);
    if (hour > 21 || (hour == 21 && minute >= 30)) {
        doSomeJob();
    }
    

    请注意,此代码在午夜后将不起作用。

    【讨论】:

      【解决方案3】:

      如果您需要今天晚上 9:30 以毫秒为单位的时间,您应该使用 Calendar 对象来构建您需要的日期和时间。

       // init calendar with current date and default locale
       Calendar cal = Calendar.getInstance(Locale.getDefault());
       cal.setTime(new Date());
      
       // set new time
       cal.set(Calendar.HOUR_OF_DAY, 21);
       cal.set(Calendar.MINUTE, 30);
       cal.set(Calendar.SECOND, 0);
      
       // obtain given time in ms
       long today930PMinMills = cal.getTimeInMillis();
      

      【讨论】:

        【解决方案4】:

        如果您有一个不错的日期时间库,则不需要毫秒。

        您可以在 Android 上使用 Joda-Time 库。

        DateTime dateTime = new DateTime( 2014, 1, 2, 3, 4, 5 );  // Year, month, day, hour, minute, second.
        boolean isNowAfterThatDateTime = DateTime.now().isAfter( dateTime );
        

        【讨论】:

          【解决方案5】:

          你为什么不用一个常数来做呢?您说您需要检查是否超过 9;30。因此,将该时间转换为毫秒并将其用作常数。 21:30 = (21 * 60 + 30) * 60 * 1000 将以毫秒为单位为您提供 9;30,以与您以毫秒为单位的当前时间进行比较

          【讨论】:

          • 这种方法会在夏令时变化的日子里失败,例如,和其他类型的时间变化
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-04
          • 2013-03-09
          • 1970-01-01
          相关资源
          最近更新 更多