【发布时间】: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
如何在Android中获取当前时间?
当我使用时
int hours = java.sql.Time.this.getHours();
我得到了错误:
No enclosing instance of the type Time is accessible in scope
【问题讨论】:
标签: android
int hours = new Time(System.currentTimeMillis()).getHours();
【讨论】:
试试这个:
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。
【讨论】:
我最喜欢的样本:
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() 快。谢谢
如果你只想要当前的时间戳,你可以使用:
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);
当您必须本地化到多个语言环境、以多种格式打印数据或对日期进行操作时,建议您这样做。
【讨论】:
只是在 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 ;
}
}
【讨论】: