我有一个类似以下Mon Jun 18 00:00:00 IST 2012
的值,我希望将其转换为18/06/2012
如何转换这个?
public String toDate(Date date) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date theDate = null;
//String in = date + "/" + month + "/" + year;
try {
theDate = dateFormat.parse(date.toString());
System.out.println("Date parsed = " + dateFormat.format(theDate));
} catch (ParseException e) {
e.printStackTrace();
}
return dateFormat.format(theDate);
}
java.text.ParseException:不可解析的日期:“Mon Jun 18 00:00:00 IST 2012”
现代方法是使用java.time类。这些类取代了麻烦的旧遗留日期时间类,如date
、calendar
和SimpleDateFormat
。
解析为ZonedDateTime
。
String input = "Mon Jun 18 00:00:00 IST 2012";
DateTimeFormatter f = DateTimeFormatter.ofPattern( "E MMM dd HH:mm:ss z uuuu" )
.withLocale( Locale.US );
ZonedDateTime zdt = ZonedDateTime.parse( input , f );
提取一个只包含日期的对象,即localdate
,不包含任何一天的时间和任何时区。
LocalDate ld = zdt.toLocalDate();
DateTimeFormatter fLocalDate = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );
String output = ld.format( fLocalDate) ;
System.out.println( "input: " + input );
System.out.println( "zdt: " + zdt );
System.out.println( "ld: " + ld );
System.out.println( "output: " + output );
LD:2012-06-18
产出:18/06/2012
请查看在ideone.com中实时运行的代码。
要了解更多信息,请参阅Oracle教程。并搜索堆栈溢出的许多例子和解释。规范是JSR310。
从哪里获得java.time类?
ThreeTen-Extra项目使用额外的类扩展了java.time。这个项目是将来可能添加到java.time的试验场。您可以在这里找到一些有用的类,如interval
、YearWeek
、YearQuarter
等。
问题内容: 我有一个像下面的值,我想将其转换为 如何转换呢? 我尝试过这种方法 但它引发以下异常: 问题答案: 我希望以下程序可以解决您的问题
问题内容: 字段定义 二传手 有谁知道如何将“零日期”转换为适当的值?因为我有错误: 即使我像这样设置“默认”字段和设置器: 我仍然会有同样的问题。 问题答案: 在这里,我将大胆猜测您正在使用MySQL :-)它使用“零日期”作为特殊占位符 -不幸的是,JDBC默认情况下无法处理它们。 解决方案是将“ zeroDateTimeBehavior = convertToNull”指定为MySQL连接的
问题内容: 字段定义 二传手 有谁知道如何将“零日期”转换为适当的值?因为我有错误: 即使我像这样设置“默认”字段和设置器: 我仍然会有同样的问题。 问题答案: 在这里,我将做出一个疯狂的猜测,即您正在使用MySQL :-)它使用“零日期”作为特殊的占位符 -不幸的是,默认情况下JDBC无法处理它们。 解决方案是将“ zeroDateTimeBehavior = convertToNull”指定为
原因:java.time.format.DateTimeParseException:无法解析文本'Feb18 2015 12:00:00:000AM':发现冲突:字段AmPmOfDay 1与从12:00派生的AmPmOfDay 0不同 我错过了什么?Thx预付款
问题内容: 我有一个字符串‘2009-06-24 09:52:43.000’,我需要将其插入到表的DateTime列中。 但我不在乎时间,只想将其插入为2009-06-24 00:00:00.000 如何在T-SQL中做到这一点? 问题答案: 对于SQL Server 2005及以下版本: 对于SQL Server 2008及更高版本:
问题内容: 如何将字段的默认值设置为“ 0000-00-00 00:00:00”?如果我们不能使用“ 0000-00-00 00:00:00”作为默认值?什么是 基本 有效tiemdate? 例如,这是用于创建我的商品表的SQL, 运行此查询时出现此错误, 问题答案: 错误原因:SQL模式 您可以设置的默认值,或场特殊的“零”作为虚拟日期“0000-00-00”值,如果SQL模式允许它。对于低于5