如何在android中设置TimeZone
在这里这样做,但仍然没有翻译成所需的:
String dtc = "2014-04-02T07:59:02.111Z"; SimpleDateFormat readDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); Date date = null; try { date = readDate.parse(dtc); Log.d("myLog", "date "+date); } catch (ParseException e) { Log.d("myLog", "dateExcep " + e); } SimpleDateFormat writeDate = new SimpleDateFormat("dd.MM.yyyy, HH.mm"); writeDate.setTimeZone(TimeZone.getTimeZone("GMT+04:00")); String s = writeDate.format(date);
在变量“s”的输出仍然给出时间07:59:02,我想提前+4小时,即11:59:02
您需要指示读取格式化程序将输入解释为UTC(GMT – 记住Z代表ISO-8601格式的UTC):
String dtc = "2014-04-02T07:59:02.111Z"; SimpleDateFormat readDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); readDate.setTimeZone(TimeZone.getTimeZone("GMT")); // missing line Date date = readDate.parse(dtc); SimpleDateFormat writeDate = new SimpleDateFormat("dd.MM.yyyy, HH.mm"); writeDate.setTimeZone(TimeZone.getTimeZone("GMT+04:00")); String s = writeDate.format(date);
然后你会得到:
02.04.2014,11.59
乔达时间
使用Joda-Time库比使用臭名昭着的捆绑java.util.Date和.Calendar类更容易和更简单地完成日期时间工作。
时区
使用适当的时区名称而不是特定的偏移量通常是一种更明智的方法。
示例代码
以下是使用Joda-Time 2.3的一些示例代码。
注意:
- Joda-Time内置了ISO 8601格式的字符串解析器。 无需实例化解析或格式化对象。
- Joda-Time正在解析UTC字符串, 并在一次调用
DateTime
构造函数时将其调整到另一个时区。 - 当在最后一行转换为基于UTC的dateTime时,我们在Universe的时间轴中仍然具有相同的时刻(自Unix纪元以来的毫秒数)。
资源…
String input = "2014-04-02T07:59:02.111Z"; DateTimeZone timeZone = DateTimeZone.forID( "Asia/Dubai" ); DateTime dateTimeDubai = new DateTime( input, timeZone ); (a) Parse, (b) Adjust time zone. DateTime dateTimeUtc = dateTimeDubai.withZone( DateTimeZone.UTC );
转储到控制台……
System.out.println( "input: " + input ); System.out.println( "dateTimeDubai: " + dateTimeDubai ); System.out.println( "dateTimeUtc: " + dateTimeUtc );
跑的时候……
input: 2014-04-02T07:59:02.111Z dateTimeDubai: 2014-04-02T11:59:02.111+04:00 dateTimeUtc: 2014-04-02T07:59:02.111Z
你可以采取任何你想要的模式,比如我有日期+时区。 所以你可以根据你设置。 这是我的代码。
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
在这里我设置了日期格式。
String currentDate = dateFormat.format(currentLocalTime); String localTime = date.format(currentLocalTime);// to get the time zone i have used this. String newtime=currentDate+localTime;// and then i have apeend this now print log you will get the desire result.