在我的项目中,我得到了json格式的API响应。我得到了UTC时间格式的时间字符串值,如Jul 16, 2013 12:08:59 AM
。
我需要将此更改为本地时间。这是我们使用此应用程序需要显示本地时间的地方。我该怎么做?
这里是一些代码我已经尝试:
String aDate = getValue("dateTime", aEventJson);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMM dd, yyyy HH:mm:ss z");
simpleDateFormat.setTimeZone(TimeZone.getDefault());
String formattedDate = simpleDateFormat.format(aDate);
假设a日期包含Jul 16, 2013 12:08:59 AM
8条答案
按热度按时间hlswsv351#
下面是我的尝试:
也注意“a”代表上午/下午标记...
suzh9iv82#
我想给出一个现代的答案:虽然
SimpleDateFormat
是我们在2013年用来解析和格式化日期时间的类(Joda-Time除外),但它现在已经过时了,我们在java.time
或JSR-310中有了更好的类,JSR-310是2014年Java 8推出的现代Java日期和时间API。但我听到你说,大多数Android设备仍然不运行Java 8。幸运的是,你仍然可以通过JSR-310到Android Java 7的后端口ThreeTenABP在它们身上使用现代的Java日期和时间API。详细信息在this question: How to use ThreeTenABP in Android Project中。
现在的代码是:
由于我的计算机运行的是欧洲/哥本哈根时区,在7月份比UTC早2小时,因此将打印
其他要点:
h
。大写的H
表示从0到23的小时。SimpleDateFormat
或DateTimeFormatter
)。如果没有给定locale,格式化程序将使用设备的默认locale。“Jul”和“AM”是英语,您的代码可能在许多设备上运行良好,直到有一天它在非英语locale的设备上运行时崩溃,您很难找出原因。ZoneId.of("Asia/Kolkata")
。JVM的默认时区可能会被程序的其他部分或运行在同一JVM中的其他程序更改,因此不可靠。zynd9foi3#
1.本地到UTC转换器
2. UTC到本地转换器
htrmnn0y4#
rqmkfv5c5#
使用以下代码。
这应该行得通。
hwazgwia6#
这是我如何在Android上做的Build.VERSION.SDK_INT〈26
当服务器发送带有时区的时间时,我必须将(3600*3)添加到getTime并将其保存到utcTime中,这样utcTime就是UTC。然后我将电话当前时区的偏移添加到utcTime中。在我的情况下,我的时区是它的打印:
但是如果我改变我的时区,日期也会改变。
o4hqfura7#
使用此代码:
调用另一个类:
0sgqnhkj8#
我想把UTC时间戳转换为本地时间戳进行一些计算。这是我所做的