我使用以下 SimpleDateFormat 来解析字符串,
SimpleDateFormat ft= new SimpleDateFormat("EEE MMM dd HH:mm:ss yyyy");
String notimeZone = ft.format(startDateTime);
Date date = ft.parse(notimeZone);
startDateTime 是日期对象,其值的格式为“Thu Mar 06 12:27:55 IST 2014”。
在 notimeZone 变量中,我得到了,2014年3月6日12:27:55
我期望在日期变量中输出,时间为2014年3月6日,12:27:55
但是,情况越来越相似,IST 2014年3月6日12:27:55
如何从日期对象中删除时区。
请帮忙。
最佳答案
java.util.Date does
没有Timezone
。它不知道TimeZone
。
打印时,java会选择默认时区。
从概念上讲,日期时间不能没有时区。日期时间必须在一个且只能是一个区域中。您可以将其转换为其他区域,但绝对不能没有区域。
如果您的业务用例需要了解时区,那么我想使用Calendar
类或Joda Time
。避免使用Date类。如果您的业务用例不需要任何时区意识,那么请继续注明日期。假设所有Date实例都在默认时区中。
最好的方法是使用Calendar
(或Joda Time
)。 Calendar
有点不直观,但是您可以完成工作。并非毫无理由地不推荐使用Date类。
用Calendar
初始化Timezone
(签出可用的构造函数)。使用Dateformat
在想要的任何时区转换并以UI
显示。我在您之前的问题中张贴了一些代码。那可能对您有帮助。我陷入了类似的问题。我在一个时区的数据库中有日期。要在用户界面的另一个时区中显示它们,您需要将该日期时间转换为另一个时区。