我试过了:
TimeZone.getDefault();
我试过了:
Calendar mCalendar = new GregorianCalendar();
TimeZone mTimeZone = mCalendar.getTimeZone();
我试过了:
Calendar c = Calendar.getInstance();
mTimeZone = c.getTimeZone();
无论我尝试什么...它都默认为0
和GMT
。我的应用似乎无法获得时区(应该是-4
或ET
,即美国东部时区)
奇怪的是......我的时钟在手机上显示正确的时间。 "使用自动时区"在我的Android设备的设置中检查。
那为什么我不能在我的应用中获得当地时间? Android时钟如何能够实现这一目标而不是我?
我在网上查了一下,似乎找不到任何东西。是否至少有一种与时钟应用程序同步的方式,并且还可以在我的应用程序上显示它的时间?有没有办法在我的应用上获得正确的时间?
答案 0 :(得分:1)
您可以尝试:
import java.util.Calendar
Date currentTime = Calendar.getInstance().getTime();
或
String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
// textView is the TextView view that should display it
textView.setText(currentDateTimeString);
答案 1 :(得分:0)
System.getMilliseconds() 返回自纪元以来的时间,该时间仅用作使用 GMT 的区域的当前时间。 (只要你使用的不是它自己的转换) 要获取自纪元以来的本地时间(以毫秒为单位),您可以使用此函数:
// Kotlin
fun getLocalTime(): Long
{
val currentDate = Calendar.getInstance()
return currentDate.timeInMillis + TimeZone.getDefault().getOffset(currentDate.timeInMillis)
}
在 Java 中可能看起来像这样:
// Java
static long getLocalTime()
{
Calendar currentDate = Calendar.getInstance();
return currentDate.getTimeInMillis() + TimeZone.getDefault().getOffset(currentDate.getTimeInMillis());
}
该函数获取自纪元以来的时间,并将手机本地时区的时区偏移量添加到其中。