我的时区有日期,我想将其转换为另一个时区,例如我的日期为“ 2013年3月15日下午3:01:53 PM”,位于时区“ GMT-06:00”。我想在“
GMT-05:00”时区进行转换。我的搜索量很多,对日期的实际工作方式感到困惑。如何将时区应用于日期。我尝试使用SimpleDateFormat,日历和偏移量。
DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss aaa XXX");
df.setTimeZone(TimeZone.getTimeZone("GMT"));
Date dt = null;
try {
dt = df.parse("3/15/2013 3:01:53 PM -06:00");
} catch (ParseException e) {
e.printStackTrace();
}
String newDateString = df.format(dt);
System.out.println(newDateString);
它返回输出 03/15/2013 09:01:53 AM Z
。我想应该是 03/15/2013 09:01:53 PM Z
,因为时间是在’GMT-06:00’时区,所以在GMT获得时间应该是HH + 6。我想使用“ yyyy-MM-dd
HH:mm:ss”格式的日期,其中HH在24小时内。请帮助我提供示例。提前致谢。
编辑:
我正在使用SimpleDateFormat将字符串转换为日期
DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss aaa");
Date dt = null;
try {
dt = df.parse("3/15/2013 3:01:53 PM");
} catch (ParseException e) {
e.printStackTrace();
}
现在,正如您所说,我向“日历”指定了我的日期为“ GMT-06:00”时区并设置了日期,
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT-6"));
cal.setTime(dt);
现在,我告诉日历我要在“ GMT”中显示日期
cal.setTimeZone (TimeZone.getTimeZone("GMT"));
System.out.println(cal.getTime());
输出:
Fri Mar 15 03:01:53 CDT 2013
如果我做错了,请知道我。
您需要两个格式的对象,一个用于解析,另一个用于打印,因为您使用两个不同的时区,请参见此处:
// h instead of H because of AM/PM-format
DateFormat parseFormat = new SimpleDateFormat("M/dd/yyyy hh:mm:ss aaa XXX");
Date dt = null;
try {
dt = parseFormat.parse("3/15/2013 3:01:53 PM -06:00");
}catch (ParseException e) {
e.printStackTrace();
}
DateFormat printFormat = new SimpleDateFormat("M/dd/yyyy hh:mm:ss aaa XXX");
printFormat.setTimeZone(TimeZone.getTimeZone("GMT-05"));
String newDateString = printFormat.format(dt);
System.out.println(newDateString);
输出:2013/3/15下午04:01:53 -05:00
如果您想要HH:mm:ss(24小时格式),则只需替换
hh:mm:ss aaa
通过
HH:mm:ss
在printFormat-pattern中。
评论问题的其他方面:
A
java.util.Date
没有内部时区,并且始终按规范引用UTC。您不能在此对象内更改它。格式化字符串可以进行时区转换,但是如我的代码示例所示(您希望转换为GMT-05区域)。
然后,问题切换到新要求,以Date
使用UTC时区(符号Z)以ISO格式打印-object。可以通过用“ yyyy-MM-
dd’T’HH:mm:ssXXX”替换模式并将显式的printFormat时区设置为GMT + 00来进行格式化。您应该阐明您真正想要的格式化输出。
关于java.util.GregorianCalendar
:在此处设置时区会以编程方式更改日历对象,因此会影响像这样的方法调用calendar.get(Calendar.HOUR_OF_DAY)
。但是,这与格式化无关!
我正在与它的时区约会,我想把它转换成另一个时区,例如。我的日期是“3/15/2013 3:01:53 PM”,它位于时区“GMT-06:00”。我想在'GMT-05:00'时区转换这个。我有很多搜索,我不知道实际约会是如何运作。如何将时区应用到日期。我尝试过SimpleDateFormat、Calender和Offset。 它返回输出。我猜应该是,因为时间在'GMT-06:00'时区,所以应该是H
问题内容: 该java.util.Date 方法显示当地时区的日期。 在几种常见的情况下,我们希望以UTC格式打印数据,包括日志,数据导出以及与外部程序的通信。 在UTC中创建String表示形式的最佳方法是什么? 如何用更好的格式替换无法排序的juDate 格式(感谢@JonSkeet!)? 附录 我认为以自定义格式和时区打印日期的标准方法非常繁琐: 我一直在寻找像这样的单线: 问题答案: 遵循
问题内容: 将日期转换为其他格式的字符串时遇到问题。日期: 我想将此格式转换为另一种格式:。 当我尝试将其转换时,使用以下方法会得到不同的结果: 我得到了错误的结果,该月已替换为分钟: 问题答案: 这是错误的。这应该是。有关将日期从一种格式转换为另一种格式的更多详细信息,请参见此http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDat
我在将日期转换为不同格式的字符串时遇到了问题。日期: 我想将此格式转换为另一种格式:。 当我尝试转换它时,我会得到不同的结果: 我得到了一个错误的结果,月被替换成了分钟:
我有一些日期格式的字符串,例如 我使用SimpleDateForate并尝试将String类型转换为Date类型。它将String类型转换为Date类型,但是Java无法识别时区“MYT”,而是将其设置为计算机的默认时区,即“CST”。我需要在Date对象中记录时区。我该怎么做?
问题内容: 使用BufferedReader时如何将String转换为int?据我记得,它类似于以下内容: 但由于某种原因,它无法正常工作。 错误消息显示: 找不到适合的方法 它也说不适用 问题答案: 一个需要在构造函数中指定。该转弯字节流通向字符流。正如其他人提到的那样,您应该意识到可以从这段代码中引发的异常,例如IOException和NumberFormatException。