Pertanyaan Bagaimana cara mendapatkan format string tanggal yang ditentukan (pattern) di java?


Saya ingin mendapatkan format string tanggal tertentu.

Contoh: Saya memiliki string seperti 2011-09-27T07:04:21.97-05:00 dan format tanggal dari string ini yyyy-MM-dd'T'HH:mm:ss.SSS.

Di sini saya ingin mengetahui format tanggal ini ketika saya melewati string (2011-09-27T07:04:21.97-05:00) ke metode yang akan mengembalikan format (yyyy-MM-dd'T'HH:mm:ss.SSS), maka nanti saya akan memformat string tanggal yang diberikan sesuai dengan kebutuhan saya (like yy-mm--dd or mm/dd/yyyy).

Bisakah ada yang memberitahuku bagaimana aku bisa mendapatkannya tercapai?


32
2017-09-28 06:38


asal


Jawaban:


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class NewClass {

    private static final String[] formats = { 
                "yyyy-MM-dd'T'HH:mm:ss'Z'",   "yyyy-MM-dd'T'HH:mm:ssZ",
                "yyyy-MM-dd'T'HH:mm:ss",      "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
                "yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd HH:mm:ss", 
                "MM/dd/yyyy HH:mm:ss",        "MM/dd/yyyy'T'HH:mm:ss.SSS'Z'", 
                "MM/dd/yyyy'T'HH:mm:ss.SSSZ", "MM/dd/yyyy'T'HH:mm:ss.SSS", 
                "MM/dd/yyyy'T'HH:mm:ssZ",     "MM/dd/yyyy'T'HH:mm:ss", 
                "yyyy:MM:dd HH:mm:ss",        "yyyyMMdd", };

        /*
         * @param args
         */
    public static void main(String[] args) {
        String yyyyMMdd = "20110917";   
        parse(yyyyMMdd);
    }

    public static void parse(String d) {
        if (d != null) {
            for (String parse : formats) {
                SimpleDateFormat sdf = new SimpleDateFormat(parse);
                try {
                    sdf.parse(d);
                    System.out.println("Printing the value of " + parse);
                } catch (ParseException e) {

                }
            }
        }
    }
}

36
2017-10-11 23:16



Anda dapat melakukan seperti ini, saya tidak tahu cara yang baik atau tidak tetapi cobalah ini

pertama buat objek SimpleDateFormat

SimpleDateFormt sdf = new SimpleDateFormat("yyyy-MM-dd 'T' HH:mm:ss.SSS");

sekarang ketika memeriksa tanggal apakah ini akan mem-parsing dalam format ini kemudian berubah sesuai format Anda

try{
     Date date = sdf.parse(yourdate);
     sdf.applyPattern("yy-mm--dd or mm/dd/yyyy");
     String dateformat = sdf.format(date);
}catch(Exception ex) { // here forgot the exact exception class Parse exception was used
    // do something here
}

postingan terbaru:

Mengembalikan format tanggal dari format string tanggal tidak dikenal di java

Bagaimana cara mengubah String to Date tanpa mengetahui formatnya?

Parse setiap tanggal di Jawa


6
2017-09-28 06:49



Saya pikir Anda harus mencoba untuk mengurai string input dengan beberapa pola standar. Yang berfungsi adalah yang Anda butuhkan. Ingat bahwa beberapa pola cukup rumit.

01.12.12 adalah 01 Desember 2012 di Eropa, tetapi 12 Januari 2012 di Amerika Serikat. Bisa juga 12 Desember 2001.


3
2017-09-28 06:44



Jika saya memahami Anda dengan benar, Anda ingin mengurai sewenang-wenang string (yaitu string format yang tidak Anda ketahui) sebagai tanggal dengan menggunakan DateFormat.parse()? Maka Anda harus berurusan dengan masalah-masalah seperti bagaimana menangani 01-02-03 (2 Jan 2003? 1 Feb 2003? Dll.)

Anda harus tahu setidaknya sesuatu tentang format yang diharapkan, seperti pilihan beberapa format yang telah ditentukan untuk input Anda.


2
2017-09-28 06:52



Kode Madhu adalah latihan, tetapi beberapa masalah kinerja akan muncul karena setiap kasus kegagalan akan meningkatkan pengecualian. Saya pikir kita perlu menemukan solusi ekspresi reguler untuk menemukan pola membentuk String tanggal yang diberikan.

Anda dapat menemukan semua ekspresi reg paling lengkap untuk tanggal dan format waktu di tautan berikut

http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5&AspxAutoDetectCookieSupport=1


2
2017-11-12 12:33



Anda perlu mengambil string tanggal inital dan menutupnya ke objek tanggal dan memberikan objek tanggal yang dikonversi dan memformatnya ke string yang Anda perlukan.


0
2017-09-28 06:44



HH:mm:ss.SSS => ([0-2]{1,}[0-9]{1,})(:)([0-5]{1,}[0-9]{1,})(:)([0-5]{1,}[0-9]{1,})(.)([0-9]{1,3})

yyyy-mm-dd => ([0-9]{4})(-)([0-1]{1,}[0-9]{1,})(-)([0-3]{1,}[0-9]{1,})

-3
2017-10-12 17:20