繁体   English   中英

从字符串转换日期格式

[英]Convert date format from string

我有一个字符串,其中包含日期和时间,格式如下

“2020-09-20-08-40”

我尝试将该字符串转换为格式为“dd-MM-yyyy HH:mm”的日期并将其打印在 textview 中。我看到其他人尝试用这种方式转换

        String dateString = "2020-09-20-08-40"
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        SimpleDateFormat format2 = new SimpleDateFormat("dd-MM-yyyy HH:mm");
        Date date = format1.parse(dateString);
        String dateFinal = format2.format(date);
        t_date.setText(dateFinal);

当我尝试这种方式时,出现错误 java.lang.IllegalArgumentException

如何解决这个问题?

tl;博士

LocalDateTime.parse( 
    "2020-09-20-08-40" , 
    DateTimeFormatter.ofPattern( "uuuu-MM-dd-HH-mm" ) 
)

查看在 IdeOne.com 实时运行的代码

2020-09-20T08:40

细节

避免使用糟糕的遗留日期时间类。 仅使用java.time类。

定义格式模式以匹配您的输入。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd-HH-mm" ) ;

解析您的输入文本。

LocalDateTime ldt = LocalDateTime.parse( input , f ) ;

提示:让您的数据发布者了解ISO 8601标准,以将日期时间值作为文本进行交换。 无需发明您的问题中看到的格式。 java.time类在解析/生成字符串时默认使用标准格式,因此无需指定格式模式。

感谢@Nima Khalili 和@Andre Artus 的回答,我可以解决这个问题。 我的代码看起来像这样

        String dateString = "2020-09-20-08-40" 
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
        format1.setTimeZone(TimeZone.getTimeZone("GMT + 7"));
        SimpleDateFormat format2 = new SimpleDateFormat("dd-MM-yyyy HH:mm");
        Date date;
        try {
            date = format1.parse(dateString);
            String dateFinal = format2.format(date);
            t_date.setText(dateFinal);
        } catch (ParseException e) {
            e.printStackTrace();
        }

如果你有一个像“2020-09-20-08-40”这样的日期+时间,那么你的格式应该反映出来,例如

“yyyy-MM-dd-HH-mm”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM