java - 从 ZonedTimeDate 到 java.util.Date 的字符串,没有月份和日期的名称
问题描述
我正在使用 aZonedDateTime
来获取当前的日期时间。因为我不希望它随着时间的推移而出现,所以我将它的格式设置为uuuu-MM-dd
它给我一个字符串作为2021-08-23
ZonedDateTime zdt = ZonedDateTime.now(ZoneId.systemDefault());
DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "uuuu-MM-dd" );
String date_string = zdt.format(formatter);
System.out.println(date_string);//2021-08-23
现在如何将此字符串转换2021-08-23
为 java.util.Date?我希望日期看起来完全像字符串...这是我尝试过的,但它不会让我的日期看起来像字符串
SimpleDateFormat formatter1 = new SimpleDateFormat("yyyy-MM-dd");
Date date = formatter1.parse(date_string);
将以这种格式给我日期:Mon Aug 23 00:00:00 EEST 2021
...如何将我的字符串转换为日期并保持日期看起来像字符串?
解决方案
tl;博士
LocalDate.now().toString()
2021-08-23
最好指定所需/预期的时区,而不是隐式依赖 JVM 当前的默认时区。
LocalDate.now( ZoneId.of( "Africa/Tunis" ) ).toString()
细节
LocalDate
如果您想要仅日期,请使用LocalDate
.
LocalDate ld = myZonedDateTime.toLocalDate() ;
这java.time.Date
门课有很大的缺陷,应该避免。该类在几年前被JSR 310 中定义的现代java.time类所取代。
如果您必须使用此类与尚未更新到java.time的旧代码互操作,您可以在旧类及其替换之间来回转换。寻找添加到旧类的新转换方法。
java.util.Date
不是约会!
了解它的许多缺陷之一是java.util.Date
. 该类代表的不是日期,而是 UTC 中的某个时刻。所以它的替代品是java.time.Instant
,不是LocalDate
。
java.util.Date d = java.util.Date.from( myZonedDateTime.toInstant() );
您询问:
如何将我的字符串转换为日期并保持日期看起来像字符串?
了解这些日期时间类都不是文本。它们有自己内部定义的日期时间值表示,而不是String
.
听起来您只需要标准 ISO 8601 格式 (YYYY-MM-DD) 的文本作为仅日期值。java.time类在生成/解析字符串时默认使用标准 ISO 8601 格式。因此无需定义自定义格式模式。
String output = myZonedDateTime.toLocalDate().toString() ;
日期时间对象没有格式,不是文本
您询问:
现在如何将此字符串 2021-08-23 转换为 java.util.Date?我希望日期看起来完全像字符串
你的要求毫无意义。
对象是java.util.Date
日期时间对象,不是文本,也不是String
. java.util.Date
对象没有“格式” 。
同样,java.time.ZonedDateTime
对象是日期时间对象,不是文本,也不是String
. java.time.ZonedDateTime
对象没有“格式” 。
同样,java.time.LocalDate
对象是日期对象,不是文本,不是String
. java.time.LocalDate
对象没有“格式” 。
这些日期时间对象具有使用默认格式生成表示嵌入值的文本的toString
方法。但是您不应该将生成的文本与原始日期时间对象混为一谈。
推荐阅读
- youtube - 下载 youtube 数据时出现“YouTube 说:无法提取视频数据”
- javascript - 尝试将 Web 部件文档库的标题覆盖为 URL 中的值 - SharePoint 2016
- amazon-web-services - 除非在特定容量下,否则如何防止创建 DynamoDB 表
- .htaccess - 使用 HTaccess 重定向特定的用户代理
- python - 将向量的每个元素的元素与同一向量的后续元素相除
- ionic-framework - 如何将输入值显示到离子网格?
- python - 很难尝试在 python 中处理异常
- json - 在 sqlalchemy 上执行 json 发布请求时出现键错误
- python - Matplotlib hist() 对二维 numpy 数组输入有什么作用?
- java - 如何在计算器上进行退格?