Hit*_*mar -4 java date java.util.date java-8
我正在尝试将 java.util.Date 转换为 java.util.Date 但格式不同
10 月 11 日星期三 10:00:00 CDT 2023 --> 2023-10-11T10:00:00.000Z
我展示了很多帖子,并尝试了下面不同的解决方案,但没有运气。
将日期转换为字符串,然后再次转换为日期,但格式不变。
Date utilDate = Wed Oct 11 10:00:00 CDT 2023 // Your java.util.Date
// Define the desired format
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// Convert the java.util.Date to a formatted String
String formattedDate = dateFormat.format(utilDate);
System.out.println("Formatted Date String: " + formattedDate);
//convert String again into java.util.Date
// it will return the same utilDate.
Run Code Online (Sandbox Code Playgroud)
还尝试使用 2 SimpleDateFormat 对象。请进一步指导我。
java.util.Date是骗人的。它不代表日期。它代表时间中的时刻,没有时区。几乎所有关于 Date 的方法(例如.getYear())都被弃用是有原因的:不可能及时询问“那是哪一年”。至少不涉及时区。
日期对象没有格式。从字面上看,它们包含 1 个long带有纪元毫秒的字段。相反,任何时候您想要将日期转换为屏幕上的像素(例如,您尝试在System.out.println、 或处扔一个jLabel.setText(dateHere)日期,或者将其扔到模板上下文对象中,然后该对象用于呈现 HTML 模板),您可以选择,每次,如何将这个带有愚蠢名称的epochmillis包装器转换为那些像素/字符。无法修改 Date 的实现呈现它的方式,toString()并且通常toString()仅用作调试辅助,而不是作为业务逻辑的一部分(汤的消耗不像我刚才所说的那么热,但特别是如果您没有经验或对 java 不熟悉,那么在您获得更多经验之前,这是要遵守的经验法则)。
因此,您的问题没有直接答案,因为您的问题的具体细节没有任何意义。这就像问:“我如何用‘鱼’的颜色粉刷我的墙壁。我应该使用哪把螺丝刀?” - 一系列不合逻辑的推论。
但这种精神是显而易见的。
因此:
使用java.time。停止使用java.util.Date. 如果您被迫这样做,因为您无法直接控制的事物向您提供了它,那么请仔细检查是否没有更好的方法(例如:如果使用 JDBC 与数据库通信,请不要调用 。.getDate(colIdx)调用.getObject(colIdx, LocalDate.class))。如果确实没有像对待您被迫使用的任何损坏代码一样对待它:用“清洁剂”包裹它 - 确保坏东西不会感染您的代码库。编写一个方法,从您无法更改的外部事物中获取该方法j.u.Date,并将其立即修改为此处实际合适的内容(可能是LocalDate,可能是ZonedDateTime,可能是Instant- 如果您不解释这是做什么的,则无法知道。日期/对于“一种类型涵盖所有需求”的解决方案来说,时间计算过于复杂)。
使用DateTimeFormatter(java.time 的 SimpleDateFormat 版本)。
如果您需要转换计算,请不要通过格式化和解析。格式化和解析就是为了将某个时间点的概念从人类手指转移到计算机,再从计算机转移到人类眼球。java.time物体有办法从一个物体到达另一个物体。有LocalDateTime并且需要将其设为分区吗?LDT 上有一些方法可以将它们制成 ZDT。它们的参数在此过程中指导您(例如,为此,您需要指定一个时区)。您需要从一个区域转换到另一区域吗?获取您的 LDT,将其转换为 ZDT,将其转换为不同区域中的 ZDT,然后将其转换回 LDT。
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |