Mas*_*sim 178
你试过用过TimeZone.getDefault()
:
大多数应用程序将使用TimeZone.getDefault(),它根据程序运行的时区返回TimeZone.
参考:http: //developer.android.com/reference/java/util/TimeZone.html
Zul*_*qar 124
TimeZone tz = TimeZone.getDefault();
System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " +tz.getID());
Run Code Online (Sandbox Code Playgroud)
输出:
TimeZone GMT + 09:30 Timezon id ::澳大利亚/达尔文
anu*_*har 13
试试这个代码 -
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
Run Code Online (Sandbox Code Playgroud)
它将返回用户选择的时区.
Ole*_*.V. 13
现代答案:
ZoneId zone = ZoneId.systemDefault();
System.out.println(zone);
Run Code Online (Sandbox Code Playgroud)
当我在澳大利亚/悉尼时区运行此代码段时,输出正是:
Run Code Online (Sandbox Code Playgroud)Australia/Sydney
如果您想要夏令时 (DST) 感知时区名称或缩写:
DateTimeFormatter longTimeZoneFormatter = DateTimeFormatter.ofPattern("zzzz", Locale.getDefault());
String longTz = ZonedDateTime.now(zone).format(longTimeZoneFormatter);
System.out.println(longTz);
DateTimeFormatter shortTimeZoneFormatter = DateTimeFormatter.ofPattern("zzz", Locale.getDefault());
String shortTz = ZonedDateTime.now(zone).format(shortTimeZoneFormatter);
System.out.println(shortTz);
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Eastern Summer Time (New South Wales) EST
TimeZone
大多数其他答案中使用的类是我们在 2011 年提出问题时所使用的类,尽管它的设计很差。今天它已经过时了,我建议我们改用 java.time,这是 2014 年推出的现代 Java 日期和时间 API。
java.time 在较旧和较新的 Android 设备上都能很好地工作。它只需要至少Java 6。
coreLibraryDesugaring
您就可以直接使用 java.time。不再需要 ThreeTenABP。(以前的项目符号:使用 ThreeTen Backport 的 Android 版本。它称为 ThreeTenABP。并确保您从org.threeten.bp
子包中导入日期和时间类。)java.time
首先描述的地方。java.time
向 Java 6 和 7 (ThreeTen for JSR-310)的向后移植。Adn*_*aki 12
我需要的偏移不仅包括日光节省时间,还包括数字.这是我用过的代码,以防有人正在寻找一个例子.
我收到了"3.5"(3:30')的回复,这是我在冬天期待的伊朗德黑兰和夏季的"4.5"(4:30').
我还需要它作为一个字符串,所以我可以将它发布到服务器,所以你可能不需要最后一行.
获得当前时区:
TimeZone tz = TimeZone.getDefault();
Date now = new Date();
//Import part : x.0 for double number
double offsetFromUtc = tz.getOffset(now.getTime()) / 3600000.0;
String m2tTimeZoneIs = Double.parseDouble(offsetFromUtc);
Run Code Online (Sandbox Code Playgroud)
TimeZone timeZone = TimeZone.getDefault();
timeZone.getID();
Run Code Online (Sandbox Code Playgroud)
它会像打印
Asia/Kolkata
Run Code Online (Sandbox Code Playgroud)
在我的设备上,TimeZone.getDefault()
始终返回 UTC 时区。
我需要这样做才能获取用户配置的时区:
TimeZone.setDefault(null)
val tz = TimeZone.getDefault()
Run Code Online (Sandbox Code Playgroud)
它将返回用户选择的时区。
这里的所有答案似乎都建议将 daylight 参数设置为false。这对于许多时区来说是不正确的,这些时区会根据一年中的时间更改缩写名称(例如EST与EDT)。
下面的解决方案将根据时区的当前日期为您提供正确的缩写。
val tz = TimeZone.getDefault()
val isDaylight = tz.inDaylightTime(Date())
val timezone = tz.getDisplayName(isDaylight, TimeZone.SHORT)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
121340 次 |
最近记录: |