【问题标题】:How to get the current Time如何获取当前时间
【发布时间】:2011-04-06 09:06:49
【问题描述】:

如何在Android中获取当前时间?

当我使用时

int hours = java.sql.Time.this.getHours();

我得到了错误:

No enclosing instance of the type Time is accessible in scope

【问题讨论】:

标签: android


【解决方案1】:
int hours = new Time(System.currentTimeMillis()).getHours();

【讨论】:

  • System.currentTimeMillis() 返回 long 并且 Time 没有长参数!抱歉,这段代码是错误的。
  • 这段代码是正确的,因为问题是关于 java.sql.Time 它有一个适当的构造函数。
  • Android 上 java.sql.time 没有 public hours 成员,必须使用 getHours()。
  • 正如我所说,它不起作用。 alt-Enter 后出现一个弹出菜单,有两个选项:“create class”、“create inner class”
  • 自 API 16 起,Time 类的 getHours() 方法已被弃用。
【解决方案2】:

试试这个:

int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);

public static final int HOUR_OF_DAY 自:API 级别 1 get 和 set 的字段编号,指示一天中的小时。 HOUR_OF_DAY 用于 24 小时制。例如,在晚上 10:04:15.250,HOUR_OF_DAY 是 22。

【讨论】:

    【解决方案3】:

    我最喜欢的样本:

    Time dtNow = new Time();
    dtNow.setToNow();
    int hours = dtNow.hour;
    String lsNow = dtNow.format("%Y.%m.%d %H:%M");
    String lsYMD = dtNow.toString();    // YYYYMMDDTHHMMSS
    

    【讨论】:

    • 我认为这比Calendar.getInstance() 快。谢谢
    【解决方案4】:

    如果你只想要当前的时间戳,你可以使用:

    long millis = System.currentTimeMillis()
    

    您还可以从android.os.SystemClock 获取其他与时间相关的值,例如正常运行时间或自上次启动以来经过的总时间(包括睡眠时间)。

    【讨论】:

      【解决方案5】:

      Calendar 类的实例设置为当前日期和时间。

      【讨论】:

        【解决方案6】:

        Calendar cal = Calendar.getInstance(); // get current time in a Calendar

        然后您可以使用 Calendar 实例做很多事情,例如获取小时或分钟 - 比如:

        int hour = cal.get(Calendar.HOUR_OF_DAY);

        当您必须本地化到多个语言环境、以多种格式打印数据或对日期进行操作时,建议您这样做。

        【讨论】:

        • 这是目前最好的答案,因为 getHours() / getDate() 等已被贬值。
        【解决方案7】:

        只是在 Andrew 的回复中添加一点内容。如果您的时区处于夏令时模式,则代码的后半部分会增加小时。 HOUR_OF_DAY 采用 24 小时格式。

            Calendar currentTime    = Calendar.getInstance()                ;
            int hour                = currentTime.get(Calendar.HOUR_OF_DAY) ; 
            int minute              = currentTime.get(Calendar.MINUTE)      ;
            int second              = currentTime.get(Calendar.SECOND)      ;
            long milliDiff          = currentTime.get(Calendar.ZONE_OFFSET) ;
            // Got local offset, now loop through available timezone id(s).
            String [] ids           = TimeZone.getAvailableIDs()            ;
            for (String id : ids) 
                    {
               TimeZone tz = TimeZone.getTimeZone(id)                   ;
               if (tz.getRawOffset() == milliDiff)
                  {  // Found a match, now check for daylight saving
                  boolean inDs    = tz.inDaylightTime(new Date())   ;
                  if (inDs)       { hour += 1 ; }
                  if (hour == 25) { hour  = 1 ; }
                  break                                             ;
                  }
                }
        

        【讨论】:

          猜你喜欢
          • 2011-02-16
          • 2015-06-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-01
          相关资源
          最近更新 更多