Czy ktoś może mi powiedzieć o formatach dat dostępnych w klasie SimpleDateFormat.
Przeszedłem przez interfejs API, ale nie mogłem znaleźć satysfakcjonującej odpowiedzi. Każda pomoc jest bardzo mile widziana.
java
date
simpledateformat
Abhishek_Mishra
źródło
źródło
Odpowiedzi:
Formaty daty i czasu są dobrze opisane poniżej
SimpleDateFormat (Java Platform SE 7) - wzorce daty i czasu
Może istnieć
n
wiele formatów, które możesz stworzyć. ex -dd/MM/yyyy
lubYYYY-'W'ww-u
możesz mieszać i dopasowywać litery, aby uzyskać wymagany wzór. Litery wzorów są następujące.G
- Oznacznik ery (AD)y
- Rok (1996; 96)Y
- Tydzień Rok (2009; 09)M
- Miesiąc w roku (lipiec; lipiec; 07)w
- Tydzień w roku (27)W
- Tydzień w miesiącu (2)D
- Dzień w roku (189)d
- Dzień w miesiącu (10)F
- Dzień tygodnia w miesiącu (2)E
- Nazwa dnia w tygodniu (wtorek; wtorek)u
- Numer dnia tygodnia (1 = poniedziałek, ..., 7 = niedziela)a
- znacznik AM / PMH
- Godzina w dzień (0-23)k
- Godzina w dzień (1-24)K
- Godzina am / pm (0-11)h
- Godzina am / pm (1-12)m
- Minuta w godzinie (30)s
- Sekunda w minucie (55)S
- Milisekunda (978)z
- Ogólna strefa czasowa (Pacific Standard Time; PST; GMT-08: 00)Z
- Strefa czasowa RFC 822 (-0800)X
- Strefa czasowa ISO 8601 (-08; -0800; -08: 00)Do analizowania:
Posługiwać się:
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
źródło
SimpleDateFormat
pozwalają na ustawienie locale w konstruktorze.SimpleDateFormat formatter = new SimpleDateFormat(pattern, locale);
Wyrzucę przykładowy kod, który otrzymałem z http://www3.ntu.edu.sg/home/ehchua/programming/java/DateTimeCalendar.html. Następnie możesz bawić się różnymi opcjami, dopóki go nie zrozumiesz.
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) }
}
Powodzenia!
źródło
java.time
AKTUALIZACJA
Inne pytania są przestarzałe. Okropne klasy spuścizny, które
SimpleDateFormat
zostały wyparte lata temu przez współczesne klasy java.time .Zwyczaj
Aby zdefiniować własne niestandardowe wzorce formatowania, kody w programie
DateTimeFormatter
są podobne, ale nie dokładnie takie same, jak kody w programieSimpleDateFormat
. Koniecznie przestudiuj dokumentację. I wyszukaj wiele przykładów przepełnienia stosu.DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd MMM uuuu" , Locale.ITALY ) ;
Standard ISO 8601
Standard ISO 8601 definiuje formaty dla wielu typów wartości daty i godziny. Formaty te są przeznaczone do wymiany danych, można je łatwo analizować maszynowo, a także łatwo odczytywać przez ludzi z różnych kultur.
W java.time klas używać formatów ISO 8601 domyślnie podczas generowania / parsowania ciągów. Po prostu wywołaj metody
toString
&parse
. Nie ma potrzeby określania wzorca formatowania.Dla wartości w UTC,
Z
na końcu oznacza UTC i wymawia się go jako „Zulu”.Zlokalizować
Zamiast określać wzorzec formatowania, możesz pozwolić java.time na automatyczną lokalizację. Skorzystaj z
DateTimeFormatter.ofLocalized…
metod.Uzyskaj aktualny moment dzięki zegarowi ściennemu używanemu przez mieszkańców określonego regionu (strefy czasowej).
ZoneId z = ZoneId.of( "Africa/Tunis" ); ZonedDateTime zdt = ZonedDateTime.now( z );
Generuj tekst w standardowym formacie ISO 8601, mądrze rozszerzonym o dodanie nazwy strefy czasowej w nawiasach kwadratowych.
Wygeneruj automatycznie zlokalizowany tekst.
Generalnie lepszą praktyką jest automatyczne lokalizowanie zamiast martwienia się zakodowanymi na stałe wzorcami formatowania.
Informacje o java.time
Struktura java.time jest wbudowana w Javę 8 i nowsze. Klasy te kłopotliwe zastąpić stary starszych klas Date-Time, takich jak
java.util.Date
,Calendar
, iSimpleDateFormat
.Aby dowiedzieć się więcej, zobacz samouczek Oracle . I przeszukaj Stack Overflow, aby znaleźć wiele przykładów i wyjaśnień. Specyfikacja to JSR 310 .
Projekt Joda-Time , obecnie w trybie konserwacji , zaleca migrację do klas java.time .
Możesz wymieniać obiekty java.time bezpośrednio ze swoją bazą danych. Użyj sterownika JDBC zgodnego z JDBC 4.2 lub nowszym. Nie ma potrzeby stosowania ciągów ani
java.sql.*
klas. Hibernate 5 i JPA 2.2 obsługują java.time .Skąd wziąć klasy java.time?
źródło
sprawdź formaty tutaj http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
Główny
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"));
metoda
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; }
źródło