Tôi muốn đặt DateTimeFormatter của riêng mình làm trình định dạng chung. Khi tôi làm dòng sau:Java 8 Đặt định dạng thời gian toàn cầu
ZonedDateTime.now();
tôi nhận được:
2016-03-30T08:58:54.180-06:00[America/Chicago]
Nếu tôi làm điều này:
ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME)
tôi nhận được:
Wed, 30 Mar 2016 9:00:06 -0600
Tôi muốn những gì đang in ở trên nhưng với am/pm vì vậy tôi đã thực hiện định dạng tùy chỉnh của mình và in ra thời gian như vậy:
DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss a Z");
ZonedDateTime.now().format(FORMATTER);
nào đã cho tôi:
Wed, 30 Mar 2016 9:00:06 AM -0600
Nhưng tôi sử dụng phương pháp .now()
này ở khắp mọi nơi cho mục đích khai thác gỗ và Tôi không muốn xác định các định dạng ở khắp mọi nơi trong các mã. Có cách nào để định cấu hình trình định dạng làm định dạng mặc định để sử dụng khi gọi phương thức .now()
không? Tôi đang nghĩ đến như phương pháp cấu hình đậu mùa xuân hoặc một cái gì đó .....
Tại sao không tạo FORMATTER tĩnh đơn và truy cập ở mọi nơi? – Loc
Tôi không chắc mình hiểu. 'ZonedDateTime.now()' không phụ thuộc vào bất kỳ trình định dạng nào. Và nếu bạn muốn một người duy nhất định dạng sau khi gọi 'định dạng', tại sao không chỉ có một hằng số ở đâu đó? – Tunaki
Những gì bạn nhận được là kết quả toString: bạn đang sử dụng println? logger? một serializer? Nếu bạn đang ở trong trường hợp toString, không có nhiều việc phải làm. – pdem