如何获取当前时间

问题描述 投票:0回答:8

Android中如何获取当前时间?

当我使用时

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

我收到错误:

No enclosing instance of the type Time is accessible in scope
java android time epoch
8个回答
16
投票
int hours = new Time(System.currentTimeMillis()).getHours();

12
投票

试试这个:

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

公共静态最终 int HOUR_OF_DAY 自:API 级别 1 get 和 set 的字段编号指示一天中的小时。 HOUR_OF_DAY 用于 24 小时制。例如,晚上 10:04:15.250,HOUR_OF_DAY 为 22。


5
投票

我最喜欢的样品:

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

4
投票

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

long millis = System.currentTimeMillis()

您还可以从

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


2
投票

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


1
投票

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

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

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

当您必须本地化到多种语言环境、以多种格式打印数据或对日期进行操作时,建议使用此方法。


1
投票

只是对安德鲁的回复添加一点内容。 如果您的时区处于夏令时模式,则代码的后面部分会增加小时。 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                                             ;
          }
        }

0
投票

java.time

2014 年 3 月,Java 8 引入了现代的

java.time
日期时间 API,取代了容易出错的旧版
java.util
日期时间 API
。任何新代码都应使用
java.time
API*

使用现代日期时间 API 的解决方案

您可以使用

LocalTime#now
获取当前时间,然后从中获取各个时间单位。您还可以通过多种方式对其进行格式化。如果你想获取纪元秒和纪元毫秒,你可以从
Instant#now
获取它们。

演示:

public class Main {
    public static void main(String[] args) {
        // ZoneId.systemDefault() returns the system default time zone.
        // Replace it as per your requirement e.g. ZoneId.of("Europe/London").
        LocalTime time = LocalTime.now(ZoneId.systemDefault());
        System.out.println(time);

        // Formatted string value of time
        System.out.println(time.format(DateTimeFormatter.ofLocalizedTime(FormatStyle.MEDIUM)));

        // If you want to get values of time units e.g. hour from this object
        System.out.println(time.getHour());
        
        // If you want to get the epoch milliseconds and epoch seconds
        Instant instant = Instant.now();
        System.out.println(instant.toEpochMilli());
        System.out.println(instant.getEpochSecond());
    }
}

在 UTC 系统上执行示例运行时的输出:

17:11:24.510921
5:11:24 PM
17
1729789884609
1729789884

在线演示

Trail:日期时间了解有关现代日期时间 API 的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.