使用joda时间将一个时区转换为另一个时区

有一个表格有国家下拉,用户将选择国家,然后有一个时区下拉,用户将选择在用户选择的国家/地区可用的时区。然后用户将输入当地日期(例如:2014年12月26日)和时间(23:11)(24小时时间)此输入的日期和时间适用于所选国家和时区。 现在我必须将这个日期和时间转换为GMT时区。 我怎么能用joda时间做到这一点

如何计算夏令时(DST)?

我已经创建了一个函数,它接受从时区到时区,日期的参数

public static String convertTimeZones( String fromTimeZoneString, String toTimeZoneString, String fromDateTime) { DateTimeZone fromTimeZone = DateTimeZone.forID(fromTimeZoneString); DateTimeZone toTimeZone = DateTimeZone.forID(toTimeZoneString); DateTime dateTime = new DateTime(fromDateTime, fromTimeZone); DateTimeFormatter outputFormatter = DateTimeFormat.forPattern("dd-MMM-yyyy HH:mm").withZone(toTimeZone); return outputFormatter.print(dateTime); } 

我想以一种格式(24-Feb-2014 12:34)将日期传递给此函数,但它没有采用这种格式

 //so we can get the local date //UTC = true, translate from UTC time to local //UTC = false, translate from local to UTC public static String formatUTCToLocalAndBackTime(String datetime, boolean UTC) { String returnTimeDate = ""; DateTime dtUTC = null; DateTimeZone timezone = DateTimeZone.getDefault(); DateTimeFormatter formatDT = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"); DateTime dateDateTime1 = formatDT.parseDateTime(datetime); DateTime now = new DateTime(); DateTime nowUTC = new LocalDateTime(now).toDateTime(DateTimeZone.UTC); long instant = now.getMillis(); long instantUTC = nowUTC.getMillis(); long offset = instantUTC - instant; if (UTC) { //convert to local time dtUTC = dateDateTime1.withZoneRetainFields(DateTimeZone.UTC); //dtUTC = dateDateTime1.toDateTime(timezone); dtUTC = dtUTC.plusMillis((int) offset); } else { //convert to UTC time dtUTC = dateDateTime1.withZoneRetainFields(timezone); dtUTC = dtUTC.minusMillis((int) offset); } returnTimeDate = dtUTC.toString(formatDT); return returnTimeDate; }