SimpleDateFormat inputFormat = new SimpleDateFormat("MM/dd/yyyy h:mma", Locale.US);
inputFormat.setTimeZone(TimeZone.getTimeZone("Etc/UTC");
Date date = inputFormat.parse(date + " " + time);
// Or whatever format you want...
SimpleDateFormat outputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.US);
outputFormat.setTimeZone(targetTimeZone);
String outputText = outputFormat.format(date);
# 1 楼答案
Joda Time library为在多个时区中处理日期/时间提供了一组很好的对象http://joda-time.sourceforge.net/
举个例子:
# 2 楼答案
爪哇。时间
java.util
日期时间API及其格式化APISimpleDateFormat
已经过时且容易出错。建议完全停止使用它们,并切换到modern Date-Time API*此外,下面引用的是来自home page of Joda-Time的通知:
使用
java.time
现代日期时间API的解决方案:输出:
ONLINE DEMO
从Trail: Date Time了解有关现代日期时间API的更多信息
*无论出于何种原因,如果您必须坚持使用Java 6或Java 7,您可以使用ThreeTen-Backport来支持大部分Java。Java 6&;的时间功能;7.如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请选中Java 8+ APIs available through desugaring和How to use ThreeTenABP in Android Project。
# 3 楼答案
SimpleDateFormat
解析它SimpleDateFormat
设置解析的Date
值的格式。(很可能不仅仅是“UTC+8”——你应该找出你真正想要的是哪个TZDB时区ID例如:
(如果你可以用Joda Time来代替,那就太好了——但我知道它对于Android应用来说相当大。)