如何转换字符串";2011-11-29 12:34:25“;迄今为止,在;“年月日”;JAVA格式

如何转换字符串";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

我正在尝试将字符串格式为“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.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 );