【发布时间】:2020-03-10 14:53:55
【问题描述】:
我有一个 java util Date 对象,我需要以“dd-MMM-yyyy”的格式编写它,但不是字符串(可以是 sql 或 util Date,没关系),我不了解我做错了什么,因为我得到的是“11”,而不是一个月的“11 月”。只有当我格式化为字符串时才会给出正确的输出...
谁能帮帮我?这是我到目前为止所尝试的,我不想要字符串的原因是因为我需要使用这个日期作为参数来运行数据库查询,并且 sql 中的字段类型是日期。
Date currentDate = new Date(Calendar.getInstance().getTimeInMillis()); output value: Thu Nov 14 17:21:44 EET 2019
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy");
String formattedDate = simpleDateFormat.format(currentDate); output value: 14-Nov-2019
java.util.Date date = simpleDateFormat.parse(formattedDate); output value: Thu Nov 14 00:00:00 EET 2019
java.sql.Date sqlStartDate = new java.sql.Date(date.getTime()); output value: 2019-11-14
【问题讨论】:
-
java.util.Date或java.sql.Date对象不表示格式化的日期,而只是表示可以格式化为字符串的日期,如果您对其应用格式样式。 格式化日期是一个字符串。 -
日期只是一个长整数,自纪元以来的毫秒数。在将其转换为字符串之前,它没有任何格式。它是默认的 Date.toString() 方法,它为您提供以“11”作为月份的格式。
-
我有什么办法可以得到“Nov”而不是“11”?
-
查看
SimpleDateFormat类,用于将日期格式化为字符串。 -
你我同意这个
the nature of these date classes, ie. they do not have formats.@SotiriosDelimanolis