Các định dạng ngày tháng có sẵn trong lớp SimpleDateFormat là gì?


82

Ai có thể cho tôi biết về các định dạng ngày tháng có sẵn trong lớp SimpleDateFormat.

Tôi đã xem qua api nhưng không thể tìm thấy câu trả lời thỏa đáng.


3
Bạn đang theo đuổi định dạng nào? Bạn phải xây dựng một định dạng bao gồm các yếu tố bạn cần.
David Grant

3
Bạn có thể tạo bất kỳ định dạng nào mà API cho phép. Không có danh sách cuối cùng.
Peter Lawrey

Câu trả lời:


137

Định dạng ngày và giờ được mô tả rõ ràng bên dưới

SimpleDateFormat (Nền tảng Java SE 7) - Mẫu ngày và giờ

Có thể có nSố định dạng bạn có thể thực hiện. ví dụ - dd/MM/yyyyhoặc YYYY-'W'ww-uhoặc bạn có thể trộn và kết hợp các chữ cái để đạt được mẫu bạn yêu cầu. Mẫu chữ như sau.

  • G - Người chỉ định thời đại (AD)
  • y - Năm (1996; 96)
  • Y - Tuần năm (2009; 09)
  • M - Tháng trong năm (Tháng 7; Tháng 7; 07)
  • w - Tuần trong năm (27)
  • W - Tuần trong tháng (2)
  • D - Ngày trong năm (189)
  • d - Ngày trong tháng (10)
  • F - Ngày trong tuần trong tháng (2)
  • E - Tên ngày trong tuần (Thứ Ba; Thứ Ba)
  • u - Số ngày trong tuần (1 = Thứ Hai, ..., 7 = Chủ Nhật)
  • a - Điểm đánh dấu AM / PM
  • H - Giờ trong ngày (0-23)
  • k - Giờ trong ngày (1-24)
  • K - Giờ sáng / chiều (0-11)
  • h - Giờ sáng / chiều (1-12)
  • m - Phút tính bằng giờ (30)
  • s - Giây trong phút (55)
  • S - Mili giây (978)
  • z - Múi giờ chung (Giờ chuẩn Thái Bình Dương; PST; GMT-08: 00)
  • Z - Múi giờ RFC 822 (-0800)
  • X - Múi giờ ISO 8601 (-08; -0800; -08: 00)

Để phân tích cú pháp:

2000-01-23T04: 56: 07.000 + 0000

Sử dụng: new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");


Cảm ơn Quoi..Nhưng bạn có thể vui lòng cho tôi biết làm cách nào để chuyển đổi ngày tháng thành các tiêu chuẩn khác nhau như EST, IST, gdt, gmt, v.v. không?
Abhishek_Mishra

1
Sau đó, bạn đang tìm kiếm ngày ở ngôn ngữ khác nhau. SimpleDateFormatcho phép thiết lập ngôn ngữ tại phương thức khởi tạo. SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale);
Subhrajyoti Majumder

OK thats một cái gì đó tôi đang tìm kiếm for..Thanks Quới .. :)
Abhishek_Mishra

Tôi đánh giá cao sự cởi mở của bạn. :)
Subhrajyoti Majumder

Đừng nhầm lẫn giữa Z và 'Z'. Tôi đã bị lừa và tôi hy vọng bất kỳ ai khác sẽ không giống như tôi.
Tiefan Ju

52

Hãy để tôi đưa ra một số mã ví dụ mà tôi nhận được từ http://www3.ntu.edu.sg/home/ehchua/programming/java/DateTimeCalendar.html Sau đó, bạn có thể thử với các tùy chọn khác nhau cho đến khi bạn hiểu nó.

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

public class DateTest {
   public static void main(String[] args) {
       Date now = new Date();

       //This is just Date's toString method and doesn't involve SimpleDateFormat
       System.out.println("toString(): " + now);  // dow mon dd hh:mm:ss zzz yyyy
       //Shows  "Mon Oct 08 08:17:06 EDT 2012"

       SimpleDateFormat dateFormatter = new SimpleDateFormat("E, y-M-d 'at' h:m:s a z");
       System.out.println("Format 1:   " + dateFormatter.format(now));
       // Shows  "Mon, 2012-10-8 at 8:17:6 AM EDT"

       dateFormatter = new SimpleDateFormat("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
       System.out.println("Format 2:   " + dateFormatter.format(now));
       // Shows  "Mon 2012.10.08 at 08:17:06 AM EDT"

       dateFormatter = new SimpleDateFormat("EEEE, MMMM d, yyyy");
       System.out.println("Format 3:   " + dateFormatter.format(now));
       // Shows  "Monday, October 8, 2012"

       // SimpleDateFormat can be used to control the date/time display format:
       //   E (day of week): 3E or fewer (in text xxx), >3E (in full text)
       //   M (month): M (in number), MM (in number with leading zero)
       //              3M: (in text xxx), >3M: (in full text full)
       //   h (hour): h, hh (with leading zero)
       //   m (minute)
       //   s (second)
       //   a (AM/PM)
       //   H (hour in 0 to 23)
       //   z (time zone)
       //  (there may be more listed under the API - I didn't check)

   }

}

Chúc may mắn!


6

java.time

CẬP NHẬT

Các câu hỏi khác đã lỗi thời. Các lớp kế thừa khủng khiếp như SimpleDateFormatđã được thay thế nhiều năm trước bởi các lớp java.time hiện đại .

Tập quán

Để xác định các mẫu định dạng tùy chỉnh của riêng bạn, các mã trong DateTimeFormattertương tự nhưng không hoàn toàn giống với mã trong SimpleDateFormat. Hãy chắc chắn để nghiên cứu các tài liệu. Và tìm kiếm Stack Overflow cho nhiều ví dụ.

DateTimeFormatter f = 
    DateTimeFormatter.ofPattern( 
        "dd MMM uuuu" , 
        Locale.ITALY 
    ) 
;

Tiêu chuẩn ISO 8601

Các tiêu chuẩn ISO 8601 tiêu chuẩn định nghĩa các định dạng cho nhiều loại giá trị ngày thời gian. Các định dạng này được thiết kế để trao đổi dữ liệu, có thể dễ dàng phân tích cú pháp bằng máy cũng như dễ dàng đọc bởi con người giữa các nền văn hóa.

Các lớp java.time sử dụng định dạng ISO 8601 theo mặc định khi tạo / phân tích cú pháp chuỗi. Đơn giản chỉ cần gọi toString& parsecác phương thức. Không cần chỉ định mẫu định dạng.

Instant.now().toString()

2018-11-05T18: 19: 33.017554Z

Đối với một giá trị bằng UTC, Zở cuối có nghĩa là UTC và được phát âm là "Zulu".

Bản địa hóa

Thay vì chỉ định một mẫu định dạng, bạn có thể để java.time tự động bản địa hóa cho bạn. Sử dụngDateTimeFormatter.ofLocalized… phương pháp.

Xem thời điểm hiện tại với thời gian trên đồng hồ treo tường được sử dụng bởi người dân của một khu vực cụ thể (một múi giờ).

ZoneId z = ZoneId.of( "Africa/Tunis" );
ZonedDateTime zdt = ZonedDateTime.now( z );

Tạo văn bản ở định dạng ISO 8601 tiêu chuẩn được mở rộng một cách khôn ngoan để thêm tên của múi giờ trong dấu ngoặc vuông.

zdt.toString (): 2018-11-05T19: 20: 23.765293 + 01: 00 [Châu Phi / Tunis]

Tạo văn bản được bản địa hóa tự động.

Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( locale );

String output = zdt.format( f );

đầu ra: lundi 5 novembre 2018 à 19:20:23 heure normale d'Europe centrale

Nói chung là một phương pháp hay hơn để tự động bản địa hóa thay vì băn khoăn với các mẫu định dạng được mã hóa cứng.


Giới thiệu về java.time

Khung java.time được tích hợp sẵn trong Java 8 trở lên. Những lớp học thay thế cái cũ phiền hà di sản lớp học ngày thời gian như java.util.Date, Calendar, &SimpleDateFormat .

Để tìm hiểu thêm, hãy xem Hướng dẫn Oracle . Và tìm kiếm Stack Overflow cho nhiều ví dụ và giải thích. Đặc điểm kỹ thuật là JSR 310 .

Các Joda thời gian dự án, bây giờ trong chế độ bảo trì , khuyên chuyển đổi sang các java.time lớp.

Bạn có thể trao đổi các đối tượng java.time trực tiếp với cơ sở dữ liệu của mình. Sử dụng trình điều khiển JDBC tương thích với JDBC 4.2 trở lên. Không cần chuỗi, không cần java.sql.*lớp. Hibernate 5 & JPA 2.2 hỗ trợ java.time .

Lấy các lớp java.time ở đâu?


5

kiểm tra các định dạng tại đây http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

chủ yếu

System.out.println("date  : " + new classname().getMyDate("2014-01-09 14:06", "dd-MMM-yyyy E hh:mm a z", "yyyy-MM-dd HH:mm"));

phương pháp

 public String getMyDate(String myDate, String returnFormat, String myFormat)
            {
                DateFormat dateFormat = new SimpleDateFormat(returnFormat);
                Date date=null;
                String returnValue="";
                try {
                    date = new SimpleDateFormat(myFormat, Locale.ENGLISH).parse(myDate);
                    returnValue = dateFormat.format(date);
                } catch (ParseException e) {
                    returnValue= myDate;
                    System.out.println("failed");
                    e.printStackTrace();
                }

            return returnValue;
            }
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.