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.
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.
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
lub YYYY-'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:
2000-01-23T04: 56: 07.000 + 0000
Posługiwać się:
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
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!
AKTUALIZACJA
Inne pytania są przestarzałe. Okropne klasy spuścizny, które SimpleDateFormat
zostały wyparte lata temu przez współczesne klasy java.time .
Aby zdefiniować własne niestandardowe wzorce formatowania, kody w programie DateTimeFormatter
są podobne, ale nie dokładnie takie same, jak kody w programie SimpleDateFormat
. Koniecznie przestudiuj dokumentację. I wyszukaj wiele przykładów przepełnienia stosu.
DateTimeFormatter f =
DateTimeFormatter.ofPattern(
"dd MMM uuuu" ,
Locale.ITALY
)
;
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.
Instant.now().toString()
2018-11-05T18: 19: 33.017554Z
Dla wartości w UTC, Z
na końcu oznacza UTC i wymawia się go jako „Zulu”.
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.
zdt.toString (): 2018-11-05T19: 20: 23.765293 + 01: 00 [Afryka / Tunis]
Wygeneruj automatycznie zlokalizowany tekst.
Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.FULL ).withLocale( locale );
String output = zdt.format( f );
wyjście: lundi 5 listopada 2018 r. do 19:20:23 heure normale d'Europe centrale
Generalnie lepszą praktyką jest automatyczne lokalizowanie zamiast martwienia się zakodowanymi na stałe wzorcami formatowania.
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
, i SimpleDateFormat
.
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?
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;
}