我如何从特定时区获得时间?

时间:2015-11-27 12:44:08

标签: java datetime jodatime

我有一个时区,我这样做:

TimeZone tz = TimeZone.getTimeZone(" GMT-05:00“); 日历c = Calendar.getInstance(tz);

如何从此时区获取具有正确时间的DateTime对象? 如果我c.getTime()我得到当前时间而不是那个时区的时间。

String time = String.format("%02d" , c.get(Calendar.HOUR_OF_DAY))+":"+
            String.format("%02d" , c.get(Calendar.MINUTE))+":"+
.                   String.format("%02d" , c.get(Calendar.SECOND))+":"+
    .           String.format("%03d" , c.get(Calendar.MILLISECOND));

我得到了预期的时间,但我无法从此字符串创建有效的DateTime对象 我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

获得和打印时区的其他可能性包括:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;


public class TestDate {

    public static void main(String[] args){
        Date date = new Date();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
        String dateString = df.format(date);

        System.out.println(dateString);
    }
}

答案 1 :(得分:0)

这可以看到此链接

TimeZone tz = TimeZone.getTimeZone("GMT+05:30");
Calendar c = Calendar.getInstance(tz);
String time = String.format("%02d" , c.get(Calendar.HOUR_OF_DAY))+":"+
            String.format("%02d" , c.get(Calendar.MINUTE))+":"+
.                   String.format("%02d" , c.get(Calendar.SECOND))+":"+
    .           String.format("%03d" , c.get(Calendar.MILLISECOND));

答案 2 :(得分:0)

您需要使用DateTime.WithZone方法

TimeZone timeZone = TimeZone.getTimeZone("GMT-05:00");
    DateTimeZone dateTimeZone = DateTimeZone.forTimeZone(timeZone);
    System.out.println(timeZone);
    System.out.println(dateTimeZone);
    DateTime dt = new DateTime();
    DateTime dtLondon = dt.withZone(dateTimeZone);
    System.out.println(dtLondon);