簡體   English   中英

字符串到日期格式 java

[英]String to date format 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);
    }
}

Output:

18:54 ,25 Apr 2021

Trail: Date Time了解有關現代日期時間 API 的更多信息。

使用舊版 API:

您需要兩個格式化程序:一個用於輸入模式,一個用於 output 模式。 在現代 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);
    }
}

Output:

18:54 ,25 Apr 2021

* For any reason, if you have to stick to Java 6 or Java 7, you can use ThreeTen-Backport which backports most of the java.time functionality to Java 6 & 7. If you are working for an Android project and your Android API級別仍然不符合 Java-8,請檢查Java 8+ API 可通過脫糖如何在 Android 項目中使用 ThreeTenABP

您缺少 1 個步驟。 SimpleDateFormat只能以您指定的格式解析日期。 您正在嘗試將基於“yyyy-MM-dd...”的字符串解析為“HH:mm...”日期。 這行不通。

首先將您的“yyyy-MM-dd”日期字符串轉換為日期。 然后,將該日期格式化為您需要的字符串

String input = "2021-04-25T18:54:18";
Date date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.ENGLISH).parse(input);
String output = new SimpleDateFormat("HH:mm, yyyy-MM-dd", Locale.ENGLISH).format(date);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM