我的格式为“ YYYY-MM-dd ”,我想将其转换为“ MMM dd,yyyy ”格式。
我用下面的代码来做这件事; 但是,当我转换“ 2014 -11-18”时,输出为“Sun Dec 29 00:00:00 IST 2013 ”
我该如何解决这个问题?
DateFormat target=new SimpleDateFormat("MMM dd, yyyy");
String P_date="2014-11-18"
Date test1 = new SimpleDateFormat("YYYY-MM-dd").parse(P_date);
String converted_date=target.format(test1);
Date test=target.parse(converted_date);
答案 0 :(得分:3)
y
(小写Y)格式表示"年"。 Y
(大写字母Y)你正在使用手段" WeekYear"。
只需使用y
就可以了:
DateFormat target=new SimpleDateFormat("MMM dd, yyyy");
String P_date="2014-11-18";
Date test1 = new SimpleDateFormat("yyyy-MM-dd").parse(P_date);
String converted_date=target.format(test1);
Date test=target.parse(converted_date);
答案 1 :(得分:2)
Y返回周年,这也是你看周日的原因。改为使用y。
Date test1 = new SimpleDateFormat("yyyy-MM-dd").parse(P_date);
答案 2 :(得分:1)
你可以这样写
final JDateChooser startDateChooser = new JDateChooser();
startDateChooser.setDateFormatString("yyyy-MM-dd");
Date startDate = startDateChooser.getDate();
HashMap listMap = new HashMap();
listMap.put("Start Period is ", ((startDate.getYear() + 1900)+ "-" + (startDate.getMonth() + 1) + "-" +startDate.getDate()));
答案 3 :(得分:0)
LocalDate.parse( "2014-11-18" ).format( // Parse string as `LocalDate` object, then generate a string in a certain format.
DateTimeFormatter.ofLocalizedDate( FormatStyle.MEDIUM )
.withLocale( Locale.US ) // Automatically localize to a locale’s human language and cultural norms.
) // Returns a String.
accepted Answer by Mureinik是正确的,您的格式化模式使用的代码不正确。
另一个问题是您对仅限日期的值感兴趣,但您使用的是日期时间类型。
此外,您正在使用麻烦的旧日期时间类,现在已被 java.time 类取代。
您的YYYY-MM-DD格式符合ISO 8601格式。解析/生成字符串时, java.time 类默认使用这些标准格式。因此无需指定格式化模式。
LocalDate ld = LocalDate.parse( "2014-11-18" ) ;
要生成其他格式的字符串,请使用DateTimeFormatter
或DateTimeFormatterBuilder
类。
您可以指定硬编码格式设置模式。但是让java.time自动本地化可以更好地进行软编码。要进行本地化,请指定:
FormatStyle
确定字符串的长度或缩写。Locale
确定(a)翻译日期名称,月份名称等的人类语言,以及(b)决定缩写,大写,标点符号,分隔符等问题的文化规范示例:
Locale l = Locale.US ; // Or Locale.CANADA_FRENCH, Locale.ITALY, etc.
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDate( FormatStyle.MEDIUM ).withLocale( l );
String output = zdt.format( f );
2014年11月18日
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
如果JDBC driver符合JDBC 4.2或更高版本,您可以直接与数据库交换 java.time 对象。不需要字符串或java.sql。* classes。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。