我想将一个日期从一个TimeZone转换为另一个。已经遇到java.util.Date的问题, 所以按照人们的建议尝试使用JODA -
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
public class JodaTimeTest {
public static void main(String[] args) throws ParseException {
DateFormat formatter = new SimpleDateFormat("dd-MMM-yy hh:mm:ss a");
System.out.println(getDateStringToShow(formatter.parse("26-Nov-10 03:31:20 PM +0530"), "Asia/Calcutta", "Europe/Dublin", false));
System.out.println(getDateStringToShow(formatter.parse("02-Oct-10 10:00:00 AM +0530"), "Asia/Calcutta", "Europe/Dublin", false));
System.out.println(getDateStringToShow(formatter.parse("26-Nov-10 11:51:20 PM +0530"), "Asia/Kolkata", "Europe/Dublin", false));
System.out.println(getDateStringToShow(formatter.parse("02-Oct-10 01:01:00 AM +0530"), "Asia/Kolkata", "Europe/Dublin", false));
}
public static String getDateStringToShow(Date date, String sourceTimeZoneId, String targetTimeZoneId, boolean includeTime) {
DateTime dateRes = new DateTime(date);
DateTime nowIndia = dateRes.toDateTime(DateTimeZone.forID(sourceTimeZoneId));
DateTime nowDub = nowIndia.toDateTime(DateTimeZone.forID(targetTimeZoneId));
DateTimeFormatter fmt = DateTimeFormat.forPattern("dd-MMM-yy z");
System.out.println("nowIndia : " + fmt.print(nowIndia));
System.out.println("nowDub : " + fmt.print(nowDub));
return "---next---";
}
}
运行时 -
nowIndia : 26-Nov-10 IST
nowDub : 26-Nov-10 GMT
---next---
nowIndia : 02-Oct-10 IST
nowDub : 02-Oct-10 IST
---next---
nowIndia : 26-Nov-10 IST
nowDub : 26-Nov-10 GMT
---next---
nowIndia : 02-Oct-10 IST
nowDub : 01-Oct-10 IST
---next---
任何人都可以建议我为什么显示IST的日期 - 02-Oct-10 10:00:00 AM +0530
答案 0 :(得分:2)
与许多时区缩写一样,"IST"
并非唯一。它可以代表以下任何一种:
Europe/Dublin
是爱尔兰的时区ID。与英国一样,它在冬季使用“格林威治标准时间”这个名称。但在夏季,当英国转向“英国夏令时”时,爱尔兰将转向“爱尔兰标准时间”。
尽管名称中包含“标准”字样,但此时区的日光名称仍然存在。如果你看到“爱尔兰夏令时” - 这是错误的。
2010年,Europe/Dublin
遵循爱尔兰标准时间from March 28 through October 31,这解释了为什么你会看到10月1日至10日的IST,而不是10月26日至10月的GMT。
有关其他详细信息,请参阅: