我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.
对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:
>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud) datetime android android-gradle-plugin threetenbp threetenabp
我有一个输入“+04:00”
我可以使用什么 API 来获取时区?
到目前为止,1)我研究了joda - https://www.joda.org/joda-time/apidocs/org/joda/time/DateTimeZone.html
static DateTimeZone forOffsetHoursMinutes(int hoursOffset, int minutesOffset)
Run Code Online (Sandbox Code Playgroud)
不确定这是否理想。
2)我检查了时区类。
http://docs.oracle.com/javase/6/docs/api/java/util/TimeZone.html#getTimeZone%28java.lang.String%29
getTimeZone
public static TimeZone getTimeZone(String ID)
Gets the TimeZone for the given ID.
Parameters:
ID - the ID for a TimeZone, either an abbreviation such as "PST", a full name such as "America/Los_Angeles", or a custom ID such as "GMT-8:00". Note that the support of abbreviations is for JDK 1.1.x compatibility only and full names should be used.
Returns:
the specified TimeZone, or the …Run Code Online (Sandbox Code Playgroud) 它返回GMT的默认时区。
在时区中使用带有“ z”的SimpleTimeFormat,它将打印“ PDT”。但是“ PDT”不在TimeZone.getAvailableIDs()返回的列表中。真奇怪!
谁知道为什么“ PDT”不是标准的tz?该如何处理?有人调用我的API,并将“ PDT”作为时区传递。谢谢。