【发布时间】:2013-04-15 10:12:17
【问题描述】:
我想将日期转换为“独立时间”。具体来说:“亚洲/加尔各答”。
代码:
// TODO Auto-generated method stub
Date date=new Date();
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Calcutta"));
String dateString=simpleDateFormat.format(date);
System.out.println("Currect Date : " + dateString);
// This is returning a string and I want a date.
System.out.println("Wrong Output : "+simpleDateFormat.parse(dateString));
//This returns a Date but has incorrect result.
这是上面代码的输出:
Correct Date : 2013-04-15 15:40:04
Wrong Output : Mon Apr 15 03:10:04 MST 2013
我想要 DATE,而不是字符串,但是当我检索日期时,时间是 3:10,当我得到字符串时,我得到 15:40:04。为什么这些不一样?
【问题讨论】:
-
只是为了添加到其他人... Date 对象只代表一个时间点并且包含 no TZ 知识,即使您可能使用 SimpleDateFormat 对象创建了它 是知道TZ。每当您将日期转换为其字符串表示时,必须使用 TZ 以了解应如何显示它。由于 Date 不知道 TZ,当您像隐式那样调用
date.toString()时,它别无选择,只能假设您的意思是 default TZ。您必须使用知道 TZ 的 SDF 对其进行格式化,而不是依赖 Date 的toString()方法。
标签: java timezone date-conversion