如何转换字符串";2011-11-29 12:34:25“;迄今为止,在;“年月日”;JAVA格式
我正在尝试将字符串格式为“yyyy-MM-dd-HH:MM:ss”的日期转换为“dd-MM-yyyy” 我实现了以下代码,但给出了它:java.lang.IllegalArgumentException如何转换字符串";2011-11-29 12:34:25“;迄今为止,在;“年月日”;JAVA格式,java,string,date,format,Java,String,Date,Format,我正在尝试将字符串格式为“yyyy-MM-dd-HH:MM:ss”的日期转换为“dd-MM-yyyy” 我实现了以下代码,但给出了它:java.lang.IllegalArgumentException SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); Date date = new Date(values); String mydate = dateFormat.f
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date(values);
String mydate = dateFormat.format(date);
您需要使用另一个
simpleDataFormat
SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = dateFormat2.parse(values);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
String mydate = dateFormat.format(date);
首先,必须将日期时间的字符串表示形式解析为日期对象
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = (Date)formatter.parse("2011-11-29 12:34:25");
然后将日期对象重新格式化为首选格式的字符串
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
String mydate = dateFormat.format(date);
IllegalArgumentException
可能发生在程序试图构造Date
对象时
价值是多少
以下代码段正确运行
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date();
String mydate = dateFormat.format(date);
System.out.println(mydate);
输出:
2011年11月29日到日期的构造函数花费很长时间,以毫秒表示时间。您需要先使用另一个
SimpleDataFormat
实例将输入字符串解析为时间戳。试试这种方法
String mydate = "2011-11-29 12:34:25"
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = null;
try{
date = sdf.parse(mydate);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
String mydate = dateFormat.format(date);
}catch(Exception ex){
// handle exception
}
tl;博士
29-11-2011
使用java.time
现代方法使用java.time类,而不是麻烦的遗留类
ISO 8601
您的输入字符串“2011-11-29 12:34:25”的格式与ISO 8601标准的格式相近。要完全遵守,用“<代码> t>代码>替换中间的空间。
String input = "2011-11-29 12:34:25".replace( " " , "T " );
在没有任何时区或UTC偏移指示的情况下,我们将解析为LocalDateTime
LocalDateTime ldt = LocalDateTime.parse( input ) ;
您需要仅日期值,因此提取一个LocalDate
。该类表示一个仅限日期的值,不包含一天中的时间和时区
LocalDate ld = ldt.toLocalDate() ;
要生成所需格式的字符串,请指定自定义格式模式
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MM-uuuu" );
String output = ld.format( f );
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 该项目现已启动,建议迁移到类 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 从哪里获得java.time类
- ,及以后
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门为Android采用了ThreeTen Backport(如上所述)
- 看
该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如、、。哪一行引发异常?值是什么。您确定SimpleDataFormatter引发异常可能与FYI重复,麻烦的旧日期时间类,如、
java.text.SimpleTextFormat
现在被这些类取代。看,嗯。。。不他要的是dd-MM-yyyy。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MM-uuuu" );
String output = ld.format( f );