Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在日期Java中设置时区_Java_Date - Fatal编程技术网

在日期Java中设置时区

在日期Java中设置时区,java,date,Java,Date,尝试在日期中设置时区(我知道日期已被弃用) 解析后时区没有改变,我缺少什么?Ajava.util.Date对象存在。这不是约会。这是一个时刻,它没有时区信息。从新纪元开始,它只是一个包裹。它实际上没有必要的字段来存储它 (让我们停止将j.u.Date的实例称为'Date',因为它不是一个。您还可以将Integer的所有实例称为'string',将所有文件称为'Grandma',这与正常情况差不多)。让我们用他们正确的名字来称呼他们:“糟糕的瞬间” 您所做的是设置格式化程序对象的时区。这是按预期的

尝试在日期中设置时区(我知道日期已被弃用)


解析后时区没有改变,我缺少什么?

A
java.util.Date
对象存在。这不是约会。这是一个时刻,它没有时区信息。从新纪元开始,它只是一个包裹。它实际上没有必要的字段来存储它

(让我们停止将j.u.Date的实例称为'Date',因为它不是一个。您还可以将Integer的所有实例称为'string',将所有文件称为'Grandma',这与正常情况差不多)。让我们用他们正确的名字来称呼他们:“糟糕的瞬间”

您所做的是设置格式化程序对象的时区。这是按预期的方式工作:当您使用附加了时区信息的格式化程序格式化这个蹩脚的即时对象时,您会得到“即时时间”,转换为人类可消费的形式,带有时区信息,并针对该时区进行调整

然后你要求重新解析它,但这是一个问题:这是一个非常广泛的工作将这一组字符解析为“糟糕的瞬间”

在本例中,您提供的bag o’chars已经包含时区信息,因此将使用这些信息。记住,日期对象是糟糕的瞬间-它们不包含时区

这应该会引起一些注意-作为您记录
date
的最后一个动作,它有效地记录了在您糟糕的instant实例上调用
toString()
方法的结果。这将。。。。创建一个带有系统默认时区的格式化程序,并使用它以人类的形式呈现,但请不要搞错,这就是不是实际上存储在您所拥有的蹩脚即时对象中的内容。所有存储在其中的内容都是
16006860000
。就这样

我强烈建议你听从德哈尔的意见:不,你不想要糟糕的瞬间。如果您收到的值类型为crapy instant(
java.util.Date
),请立即将其转换为
instant


如果您必须将计算出的时间值交还给某个方法、接口、字段或诸如此类的对象,并且必须是日期形式,请将您漂亮的即时实例(
java.time.instant
)转换回蹩脚的即时形式。

我知道日期不推荐==>您为什么要使用它?你一定要去吗?是的,我一定要去,因为我的取款机必须是日期。这回答了你的问题吗?另请参见:然后使用遗留兼容性方法:和,并使用
java.time
在两者之间执行转换和计算。说真的,这听起来很愚蠢,但会更好,甚至可能会鼓励您完全避免使用
java.util.Date
..+1,我肯定会开始使用
java.util.Date
的正确名称“crapy instant”来解释接下来的问题。
    LOG.error(modifiedDate + "Date in service"); //Mon Sep 21 06:15:00 CDT 2020
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z", Locale.ENGLISH);
format.setTimeZone(TimeZone.getDefault());
String dateString = format.format(modifiedDate);
LOG.error(dateString + "  dateString"); //2020-09-21 06:15:00 -0500
Date date = format.parse(dateString);
LOG.error(date + "    date after parsing"); //Mon Sep 21 06:15:00 CDT