Java 为什么在UTC日期中附加本地时区字符串?

Java 为什么在UTC日期中附加本地时区字符串?,java,Java,我想在UTC时区中获取一个日期对象,因此我首先将其转换为一个字符串,该字符串将返回正确的UTC日期字符串,但当我再次将其解析为日期对象时,本地时区字符串(即IST)将附加到该日期中,而不是UTC中 Date date = new Date(); DateFormat timeFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); timeFormat.setTimeZone(TimeZone.ge

我想在UTC时区中获取一个日期对象,因此我首先将其转换为一个字符串,该字符串将返回正确的UTC日期字符串,但当我再次将其解析为日期对象时,本地时区字符串(即IST)将附加到该日期中,而不是UTC中

        Date date = new Date();
        DateFormat timeFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        timeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
        String estTime = timeFormat.format(date);
        date = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss", Locale.ENGLISH).parse(estTime);

日期没有时区,它代表一个时刻。它以毫秒为单位保存时间


不能将日期设置为带有格式的
Date
,这样不行。如果您需要在GUI、控制台或其他任何地方显示
日期
,这时您可以使用
SimpleDataFormat
,就像您将其更改为所需格式的
字符串

您想以UTC获取当前时间吗?是的,但仅以日期对象的形式。数据库将使用自己的格式保存
日期
,它也不需要时区。除非数据库中的
日期
字段是
字符串
(或与其等效),否则不需要对日期执行任何操作。使用
PreparedStatement
并将
日期直接传递给它。在这种情况下,存储的时间将是特定于服务器的???我需要存储时间(仅根据UTC时区)…不,不会。数据库也将只保存即时的表示,但它将自行处理如何存储该信息,这可能与Java的处理方式不同。