字符串到日期格式java

我有这个String date="2021-04-25T18:54:18",我应该这样格式化:HH:mm ,dd mmm yyyy

我试过这个

String date="2021-04-25T18:54:18";
 Date format= null;
    try {
        format = new SimpleDateFormat("HH:mm, yyyy-MM-dd'T", Locale.ENGLISH).parse(date);
        holder.tvDate.setText(format.toString());

    } catch (ParseException e) {
        e.printStackTrace();
    }

但不起作用

回答

遗留的日期时间 API(java.util日期时间类型及其格式 API,SimpleDateFormat)已经过时且容易出错。建议完全停止切换,并使用它们java.time,将现代的日期时间API *

使用现代日期时间 API:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        String strDateTime = "2021-04-25T18:54:18";
        LocalDateTime ldt = LocalDateTime.parse(strDateTime);

        DateTimeFormatter dtfOutput = DateTimeFormatter.ofPattern("HH:mm ,dd MMM yyyy", Locale.ENGLISH);
        String output = dtfOutput.format(ldt);
        System.out.println(output);
    }
}

输出:

18:54 ,25 Apr 2021
18:54 ,25 Apr 2021

Trail: Date Time 中了解有关现代日期时间 API 的更多信息。

使用旧 API:

您需要两种格式化程序:一种用于输入模式,一种用于输出模式。对于现代 API,您不需要两个格式化程序,因为现代 API 基于ISO 8601并且您的日期时间字符串已经采用这种格式。

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class Main {
    public static void main(String[] args) throws ParseException {
        String strDateTime = "2021-04-25T18:54:18";
        SimpleDateFormat sdfInput = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH);
        Date date = sdfInput.parse(strDateTime);

        SimpleDateFormat sdfOutput = new SimpleDateFormat("HH:mm ,dd MMM yyyy", Locale.ENGLISH);
        String output = sdfOutput.format(date);
        System.out.println(output);
    }
}

输出:


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。如果您正在为 Android 项目和您的 Android API 工作级别仍然不符合 Java-8,请检查通过 desugaring和How to use ThreeTenABP in Android Project可用的 Java 8+ APIs。


以上是字符串到日期格式java的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>