Android中如何获取当前时间?
当我使用时
int hours = java.sql.Time.this.getHours();
我收到错误:
No enclosing instance of the type Time is accessible in scope
int hours = new Time(System.currentTimeMillis()).getHours();
试试这个:
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。
我最喜欢的样品:
Time dtNow = new Time();
dtNow.setToNow();
int hours = dtNow.hour;
String lsNow = dtNow.format("%Y.%m.%d %H:%M");
String lsYMD = dtNow.toString(); // YYYYMMDDTHHMMSS
如果您只想要当前时间戳,可以使用:
long millis = System.currentTimeMillis()
您还可以从
android.os.SystemClock
获取其他时间相关值,例如正常运行时间或自上次启动以来的总运行时间(包括睡眠时间)。
Calendar
类的实例设置为当前日期和时间。
Calendar cal = Calendar.getInstance(); // get current time in a Calendar
然后你可以使用 Calendar 实例做很多事情,例如获取小时或分钟 - 例如:
int hour = cal.get(Calendar.HOUR_OF_DAY);
当您必须本地化到多种语言环境、以多种格式打印数据或对日期进行操作时,建议使用此方法。
只是对安德鲁的回复添加一点内容。 如果您的时区处于夏令时模式,则代码的后面部分会增加小时。 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 ;
}
}
java.time
2014 年 3 月,Java 8 引入了现代的
java.time
日期时间 API,取代了容易出错的旧版java.util
日期时间 API。任何新代码都应使用 java.time
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 的更多信息。