我有一个以yyyy-mm-dd hh:mm:ss timezone
格式存储在日期变量(java.util.Date
((比如2015-4-4 15:30:26-0700
(中的日期。现在,如果我尝试获取日历日(即04 april 2015
(,它会被转换为我的本地时区,并在第二天打印(即05 april 2015
(。如何获取特定时区(如+1:30
GMT(的日历日?我正在使用java.util.Date
中的getdate()
函数来获取日历日。
我有一个日期存储在日期变量(java.util.date(中,(比如2015-4-4 15:30:26-0700(,格式为yyyy-mm-dd hh:mm:ss时区。
不,您有一个Date
变量。它没有任何特定的格式。忽略toString()
告诉你的内容——这只是以默认格式在本地时区对其进行格式化。这并不意味着格式或时区是Date
对象状态的一部分,它只是表示一个时间点。
听起来你想要:
// Whatever pattern you want - ideally, specify the locale too
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// Whatever time zone you want
format.setTimeZone(...);
String text = format.format(date);
或者,如果您只想要Calendar
值:
TimeZone zone = ...; // Whatever time zone you want
Calendar calendar = Calendar.getInstance(zone);
calendar.setTime(date);
// Now use calendar.get(Calendar.YEAR) etc