Java string to date conversion
Jaki jest najlepszy sposób na konwersję String
w formacie 'January 2, 2010' na Date
w Javie?
Ostatecznie chcę wyodrębnić miesiąc, dzień i rok jako liczby całkowite, aby móc używać
Date date = new Date();
date.setMonth()..
date.setYear()..
date.setDay()..
date.setlong currentTime = date.getTime();
Aby zamienić datę na czas.
14 answers
To jest trudny sposób, a te metody settera są przestarzałe od wersji Java 1.1 (1997). po prostu sformatuj datę używając SimpleDateFormat
używając wzorca formatu pasującego do ciągu wejściowego .
W twoim konkretnym przypadku "2 stycznia 2010" jako ciąg wejściowy:
- "Styczeń" jest miesiącem pełnotekstowym, więc użyj dla niego wzoru
MMMM
]} - "2" to krótki dzień miesiąca, więc użyj dla niego wzoru
d
. - "2010" jest rokiem czterocyfrowym, więc użyj
yyyy
wzór na to.
String string = "January 2, 2010";
DateFormat format = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH);
Date date = format.parse(string);
System.out.println(date); // Sat Jan 02 00:00:00 GMT 2010
Zwróć uwagę na znaczenie jawnego argumentu Locale
. Jeśli go pominiesz, to użyje domyślne locale , które niekoniecznie jest angielskie, jak zostało użyte w nazwie miesiąca w ciągu wejściowym. Jeśli Ustawienia regionalne nie pasują do ciągu wejściowego, to mylnie otrzymamy java.text.ParseException
, nawet jeśli wzorzec formatowania wydaje się prawidłowy.
Oto Wyciąg istotności z javadoc , zawierający listę wszystkich dostępnych formatów wzory:
Letter Date or Time Component Presentation Examples
------ ---------------------- ------------------ -------------------------------------
G Era designator Text AD
y Year Year 1996; 96
Y Week year Year 2009; 09
M/L Month in year Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day in week Text Tuesday; Tue
u Day number of week Number 1
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zone -0800
X Time zone ISO 8601 time zone -08; -0800; -08:00
Zauważ, że wzorce uwzględniają wielkość liter i że wzorce tekstowe składające się z czterech lub więcej znaków reprezentują pełną formę; w przeciwnym razie używana jest krótka lub skrócona forma, jeśli jest dostępna. Więc np. MMMMM
lub więcej jest niepotrzebne.
Oto kilka przykładów poprawnych wzorców SimpleDateFormat
do przetworzenia podanego ciągu:
Input string Pattern
------------------------------------ ----------------------------
2001.07.04 AD at 12:08:56 PDT yyyy.MM.dd G 'at' HH:mm:ss z
Wed, Jul 4, '01 EEE, MMM d, ''yy
12:08 PM h:mm a
12 o'clock PM, Pacific Daylight Time hh 'o''clock' a, zzzz
0:08 PM, PDT K:mm a, z
02001.July.04 AD 12:08 PM yyyyy.MMMM.dd GGG hh:mm aaa
Wed, 4 Jul 2001 12:08:56 -0700 EEE, d MMM yyyy HH:mm:ss Z
010704120856-0700 yyMMddHHmmssZ
2001-07-04T12:08:56.235-0700 yyyy-MM-dd'T'HH:mm:ss.SSSZ
2001-07-04T12:08:56.235-07:00 yyyy-MM-dd'T'HH:mm:ss.SSSXXX
2001-W27-3 YYYY-'W'ww-u
Ważną informacją jest to, że SimpleDateFormat
jesta nie wątek Bezpieczny. Innymi słowy, nigdy nie należy deklarować i przypisywać go jako statycznego lub zmienną instancji, a następnie użyć jej ponownie z różnych metod/wątków. Należy zawsze utworzyć go zupełnie nowy w ramach metody local scope.
Java 8 update
Jeśli zdarzy ci się być na Javie 8 lub nowszej, użyj DateTimeFormatter
(również tutaj, Kliknij link, aby zobaczyć wszystkie predefiniowane formatery i dostępne wzorce formatów; tutorial jest dostępny tutaj ). Ten nowy API jest inspirowany JodaTime .
String string = "January 2, 2010";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse(string, formatter);
System.out.println(date); // 2010-01-02
Uwaga: jeśli wzorzec formatu stanie się zawierać również część czasu, a następnie użyć LocalDateTime#parse(text, formatter)
zamiast LocalDate#parse(text, formatter)
. A jeśli wzorzec formatu zawiera również strefę czasową, użyj ZonedDateTime#parse(text, formatter)
zamiast tego.
Oto Wyciąg istotności z javadoc , zawierający listę wszystkich dostępnych wzorców formatów:
Symbol Meaning Presentation Examples
------ -------------------------- ------------ ----------------------------------------------
G era text AD; Anno Domini; A
u year year 2004; 04
y year-of-era year 2004; 04
D day-of-year number 189
M/L month-of-year number/text 7; 07; Jul; July; J
d day-of-month number 10
Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter
Y week-based-year year 1996; 96
w week-of-week-based-year number 27
W week-of-month number 4
E day-of-week text Tue; Tuesday; T
e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T
F week-of-month number 3
a am-pm-of-day text PM
h clock-hour-of-am-pm (1-12) number 12
K hour-of-am-pm (0-11) number 0
k clock-hour-of-am-pm (1-24) number 0
H hour-of-day (0-23) number 0
m minute-of-hour number 30
s second-of-minute number 55
S fraction-of-second fraction 978
A milli-of-day number 1234
n nano-of-second number 987654321
N nano-of-day number 1234000000
V time-zone ID zone-id America/Los_Angeles; Z; -08:30
z time-zone name zone-name Pacific Standard Time; PST
O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00;
X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15;
x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15;
Z zone-offset offset-Z +0000; -0800; -08:00;
Należy pamiętać, że ma kilka predefiniowanych formaterów dla bardziej popularnych wzorców. Więc zamiast np. DateTimeFormatter.ofPattern("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH);
, można użyć DateTimeFormatter.RFC_1123_DATE_TIME
. Jest to możliwe, ponieważ są, w przeciwieństwie do SimpleDateFormat
, bezpieczne. W ten sposób można również zdefiniować własne, jeśli to konieczne.
Dla określonego formatu ciągu wejściowego, nie musisz używać jawnego DateTimeFormatter
: standard ISO 8601 Data, jak 2016-09-26T17:44:57Z, może być parsowany bezpośrednio z LocalDateTime#parse(text)
ponieważ już korzysta z ISO_LOCAL_DATE_TIME
formatter. Podobnie, LocalDate#parse(text)
przetwarza datę ISO bez składnika czasowego (patrz ISO_LOCAL_DATE
), oraz ZonedDateTime#parse(text)
parses an ISO Data z dodanym offsetem i strefą czasową (zobacz ISO_ZONED_DATE_TIME
).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-10 12:06:38
Ah tak dyskusja Java date, znowu. Aby poradzić sobie z manipulacją datą używamy Date, Kalendarz, GregorianCalendar i SimpleDateFormat . Na przykład użycie daty stycznia jako danych wejściowych:
Calendar mydate = new GregorianCalendar();
String mystring = "January 2, 2010";
Date thedate = new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(mystring);
mydate.setTime(thedate);
//breakdown
System.out.println("mydate -> "+mydate);
System.out.println("year -> "+mydate.get(Calendar.YEAR));
System.out.println("month -> "+mydate.get(Calendar.MONTH));
System.out.println("dom -> "+mydate.get(Calendar.DAY_OF_MONTH));
System.out.println("dow -> "+mydate.get(Calendar.DAY_OF_WEEK));
System.out.println("hour -> "+mydate.get(Calendar.HOUR));
System.out.println("minute -> "+mydate.get(Calendar.MINUTE));
System.out.println("second -> "+mydate.get(Calendar.SECOND));
System.out.println("milli -> "+mydate.get(Calendar.MILLISECOND));
System.out.println("ampm -> "+mydate.get(Calendar.AM_PM));
System.out.println("hod -> "+mydate.get(Calendar.HOUR_OF_DAY));
Wtedy możesz manipulować tym czymś w stylu:
Calendar now = Calendar.getInstance();
mydate.set(Calendar.YEAR,2009);
mydate.set(Calendar.MONTH,Calendar.FEBRUARY);
mydate.set(Calendar.DAY_OF_MONTH,25);
mydate.set(Calendar.HOUR_OF_DAY,now.get(Calendar.HOUR_OF_DAY));
mydate.set(Calendar.MINUTE,now.get(Calendar.MINUTE));
mydate.set(Calendar.SECOND,now.get(Calendar.SECOND));
// or with one statement
//mydate.set(2009, Calendar.FEBRUARY, 25, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND));
System.out.println("mydate -> "+mydate);
System.out.println("year -> "+mydate.get(Calendar.YEAR));
System.out.println("month -> "+mydate.get(Calendar.MONTH));
System.out.println("dom -> "+mydate.get(Calendar.DAY_OF_MONTH));
System.out.println("dow -> "+mydate.get(Calendar.DAY_OF_WEEK));
System.out.println("hour -> "+mydate.get(Calendar.HOUR));
System.out.println("minute -> "+mydate.get(Calendar.MINUTE));
System.out.println("second -> "+mydate.get(Calendar.SECOND));
System.out.println("milli -> "+mydate.get(Calendar.MILLISECOND));
System.out.println("ampm -> "+mydate.get(Calendar.AM_PM));
System.out.println("hod -> "+mydate.get(Calendar.HOUR_OF_DAY));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-19 03:27:40
String str_date = "11-June-07";
DateFormat formatter;
Date date;
formatter = new SimpleDateFormat("dd-MMM-yy");
date = formatter.parse(str_date);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 23:36:33
W Javie 8 otrzymujemy nowe Api Date / Time (JSR 310 ).
Do parsowania daty w Javie 8 można użyć następującego sposobu, bez polegania na Joda-Time :
String str = "January 2, 2010";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse(str, formatter);
// access date fields
int year = date.getYear(); // 2010
int day = date.getDayOfMonth(); // 2
Month month = date.getMonth(); // JANUARY
int monthAsInt = month.getValue(); // 1
LocalDate jest standardową klasą Java 8 do reprezentowania daty (Bez Czasu). Jeśli chcesz analizować wartości zawierające informacje o dacie i czasie, powinieneś użyć LocalDateTime. Dla wartości z strefami czasowymi użyj ZonedDateTime . Oba zapewniają parse()
metodę podobną do LocalDate
:
LocalDateTime dateWithTime = LocalDateTime.parse(strWithDateAndTime, dateTimeFormatter);
ZonedDateTime zoned = ZonedDateTime.parse(strWithTimeZone, zoneFormatter);
Lista formatujących znaki z DateTimeFormatter Javadoc :
All letters 'A' to 'Z' and 'a' to 'z' are reserved as pattern letters.
The following pattern letters are defined:
Symbol Meaning Presentation Examples
------ ------- ------------ -------
G era text AD; Anno Domini; A
u year year 2004; 04
y year-of-era year 2004; 04
D day-of-year number 189
M/L month-of-year number/text 7; 07; Jul; July; J
d day-of-month number 10
Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter
Y week-based-year year 1996; 96
w week-of-week-based-year number 27
W week-of-month number 4
E day-of-week text Tue; Tuesday; T
e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T
F week-of-month number 3
a am-pm-of-day text PM
h clock-hour-of-am-pm (1-12) number 12
K hour-of-am-pm (0-11) number 0
k clock-hour-of-am-pm (1-24) number 0
H hour-of-day (0-23) number 0
m minute-of-hour number 30
s second-of-minute number 55
S fraction-of-second fraction 978
A milli-of-day number 1234
n nano-of-second number 987654321
N nano-of-day number 1234000000
V time-zone ID zone-id America/Los_Angeles; Z; -08:30
z time-zone name zone-name Pacific Standard Time; PST
O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00;
X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15;
x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15;
Z zone-offset offset-Z +0000; -0800; -08:00;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-23 00:11:25
Chociaż niektóre odpowiedzi są poprawne technicznie, nie są wskazane.
- java.util.Zajęcia z daty i Kalendarza są notorycznie kłopotliwe. Ze względu na wady w projekcie i realizacji, unikać ich. Na szczęście mamy do wyboru dwie inne doskonałe biblioteki data-time:
-
Joda-CZAS
ta popularna biblioteka open-source może być używana w kilku wersjach Javy. Wiele przykładów jego użycia można znaleźć na StackOverflow. Przeczytanie niektórych z nich pomoże Ci szybko się zorientować. -
java.czas.* pakiet
ten nowy zestaw klas jest inspirowany Joda-Time I zdefiniowany przez JSR 310. Klasy te są wbudowane w Java 8. Trwa projekt backportowania tych klas do Java 7, ale backportowanie nie jest wspierane przez Oracle.
Jak słusznie zauważył Kristopher Johnson w komentarzu do pytania, Pozostałe odpowiedzi ignorują istotne kwestie z:
-
Joda-CZAS
-
pora dnia
Date ma zarówno porcję daty, jak i porcję czasu dnia) -
Strefa czasowa
początek dnia zależy od strefy czasowej. Jeśli nie określisz strefy czasowej, zostanie zastosowana domyślna Strefa czasowa JVM. Oznacza to, że zachowanie kodu może ulec zmianie po uruchomieniu na innych komputerach lub ze zmodyfikowanym ustawieniem strefy czasowej. Pewnie nie tego chcesz. -
Locale
język Locale określa sposób interpretacji słowa (nazwa miesiąca i dnia) napotkane podczas parsowania. (Odpowiedź by BalusC obsługuje to poprawnie.) Również ustawienia regionalne wpływają na wyjście niektórych formatatorów podczas generowania reprezentacji ciągu daty i czasu.
Joda-Czas
Kilka uwag o Joda-Time.
Strefa Czasowa
W Joda-Time , obiekt DateTime naprawdę zna własną przypisaną strefę czasową. To kontrastuje z Javą.util.Klasa daty który wydaje się mieć strefę czasową, ale nie ma.
Zauważ w poniższym przykładzie jak przekazujemy obiekt strefy czasowej do formatera, który przetwarza łańcuch znaków. Ta strefa czasowa jest używana do interpretacji tej daty-czasu jako która miała miejsce w tej strefie czasowej. Więc musisz pomyśleć i określić strefę czasową reprezentowaną przez to wejście łańcuchowe.
Ponieważ nie masz porcji czasu w łańcuchu wejściowym, Joda-Time przypisuje pierwszą chwilę dnia określonej strefy czasowej jako pora dnia. Zazwyczaj oznacza to 00:00:00
, ale nie zawsze, z powodu czasu letniego (DST) lub innych anomalii. Przy okazji, możesz zrobić to samo z dowolną instancją DateTime, wywołując withTimeAtStartOfDay
.
Wzór Formatera
Znaki używane we wzorze formatera są podobne w Joda-Time do tych w Javie.util.Data / Kalendarz, ale nie dokładnie to samo. Uważnie przeczytaj doc.
Niezmienność
Zwykle używamy niezmiennych klas w Joda-Time. Zamiast modyfikowanie istniejącego obiektu Data-Czas, wywołujemy metody, które tworzą nową instancję fresh na podstawie innego obiektu, którego większość aspektów została skopiowana, z wyjątkiem przypadków, w których pożądane były zmiany. Przykładem jest wywołanie withZone
w ostatniej linii poniżej. niezmienność pomaga uczynić czas Joda bardzo bezpiecznym dla wątków, a także może sprawić, że niektóre prace będą bardziej przejrzyste.
Konwersja
Będziesz potrzebował Javy.util.Obiekty Date do użycia z innymi klasami / frameworkiem, które nie wiedzą o obiektach Joda-Time. Na szczęście, bardzo łatwo jest poruszać się tam iz powrotem.
Idąc z Javy.util.Obiekt Date (tutaj o nazwie date
) do Joda-Time DateTime...
org.joda.time.DateTime dateTime = new DateTime( date, timeZone );
Idąc w przeciwnym kierunku od Joda-Time do Javy.util.Date object ...
java.util.Date date = dateTime.toDate();
Przykładowy Kod
String input = "January 2, 2010";
java.util.Locale locale = java.util.Locale.US;
DateTimeZone timeZone = DateTimeZone.forID( "Pacific/Honolulu" ); // Arbitrarily chosen for example.
DateTimeFormatter formatter = DateTimeFormat.forPattern( "MMMM d, yyyy" ).withZone( timeZone ).withLocale( locale );
DateTime dateTime = formatter.parseDateTime( input );
System.out.println( "dateTime: " + dateTime );
System.out.println( "dateTime in UTC/GMT: " + dateTime.withZone( DateTimeZone.UTC ) );
When run ...
dateTime: 2010-01-02T00:00:00.000-10:00
dateTime in UTC/GMT: 2010-01-02T10:00:00.000Z
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:29
Podczas pracy z klasą SimpleDateFormat, ważne jest, aby pamiętać, że Data nie jest bezpieczna dla wątków i nie można udostępniać jednego obiektu Date wielu wątkom.
Istnieje również duża różnica między " m " I "M", gdzie małe litery są używane dla minut, a Duże dla miesiąca. To samo z " d " I "D". Może to powodować subtelne błędy, które często są pomijane. Zobacz Javadoc lub Instrukcja konwersji ciągu znaków na datę w Javie więcej szczegóły.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 23:32:02
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date;
try {
date = dateFormat.parse("2013-12-4");
System.out.println(date.toString()); // Wed Dec 04 00:00:00 CST 2013
String output = dateFormat.format(date);
System.out.println(output); // 2013-12-04
}
catch (ParseException e) {
e.printStackTrace();
}
Dla mnie działa dobrze.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 23:40:05
Ponadto SimpleDateFormat nie jest dostępny z niektórymi technologiami po stronie klienta, takimi jak GWT .
To dobry pomysł, aby przejść do kalendarza.getInstance (), a Twoim wymaganiem jest porównanie dwóch dat; idź na long date.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 23:35:22
Mój skromny program testowy. Używam go do zabawy z formaterem i szukania długich dat, które znajduję w plikach dziennika (ale kto je tam umieścił...).
Mój program testowy:
package be.test.package.time;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TimeZone;
public class TimeWork {
public static void main(String[] args) {
TimeZone timezone = TimeZone.getTimeZone("UTC");
List<Long> longs = new ArrayList<>();
List<String> strings = new ArrayList<>();
//Formatting a date needs a timezone - otherwise the date get formatted to your system time zone.
//Use 24h format HH. In 12h format hh can be in range 0-11, which makes 12 overflow to 0.
DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss.SSS");
formatter.setTimeZone(timezone);
Date now = new Date();
//Test dates
strings.add(formatter.format(now));
strings.add("01-01-1970 00:00:00.000");
strings.add("01-01-1970 00:00:01.000");
strings.add("01-01-1970 00:01:00.000");
strings.add("01-01-1970 01:00:00.000");
strings.add("01-01-1970 10:00:00.000");
strings.add("01-01-1970 12:00:00.000");
strings.add("01-01-1970 24:00:00.000");
strings.add("02-01-1970 00:00:00.000");
strings.add("01-01-1971 00:00:00.000");
strings.add("01-01-2014 00:00:00.000");
strings.add("31-12-1969 23:59:59.000");
strings.add("31-12-1969 23:59:00.000");
strings.add("31-12-1969 23:00:00.000");
//Test data
longs.add(now.getTime());
longs.add(-1L);
longs.add(0L); //Long date presentation at - midnight 1/1/1970 UTC - The timezone is important!
longs.add(1L);
longs.add(1000L);
longs.add(60000L);
longs.add(3600000L);
longs.add(36000000L);
longs.add(43200000L);
longs.add(86400000L);
longs.add(31536000000L);
longs.add(1388534400000L);
longs.add(7260000L);
longs.add(1417706084037L);
longs.add(-7260000L);
System.out.println("===== String to long =====");
//Show the long value of the date
for (String string: strings) {
try {
Date date = formatter.parse(string);
System.out.println("Formated date : " + string + " = Long = " + date.getTime());
} catch (ParseException e) {
e.printStackTrace();
}
}
System.out.println("===== Long to String =====");
//Show the date behind the long
for (Long lo : longs) {
Date date = new Date(lo);
String string = formatter.format(date);
System.out.println("Formated date : " + string + " = Long = " + lo);
}
}
}
Wyniki badań:
===== String to long =====
Formated date : 05-12-2014 10:17:34.873 = Long = 1417774654873
Formated date : 01-01-1970 00:00:00.000 = Long = 0
Formated date : 01-01-1970 00:00:01.000 = Long = 1000
Formated date : 01-01-1970 00:01:00.000 = Long = 60000
Formated date : 01-01-1970 01:00:00.000 = Long = 3600000
Formated date : 01-01-1970 10:00:00.000 = Long = 36000000
Formated date : 01-01-1970 12:00:00.000 = Long = 43200000
Formated date : 01-01-1970 24:00:00.000 = Long = 86400000
Formated date : 02-01-1970 00:00:00.000 = Long = 86400000
Formated date : 01-01-1971 00:00:00.000 = Long = 31536000000
Formated date : 01-01-2014 00:00:00.000 = Long = 1388534400000
Formated date : 31-12-1969 23:59:59.000 = Long = -1000
Formated date : 31-12-1969 23:59:00.000 = Long = -60000
Formated date : 31-12-1969 23:00:00.000 = Long = -3600000
===== Long to String =====
Formated date : 05-12-2014 10:17:34.873 = Long = 1417774654873
Formated date : 31-12-1969 23:59:59.999 = Long = -1
Formated date : 01-01-1970 00:00:00.000 = Long = 0
Formated date : 01-01-1970 00:00:00.001 = Long = 1
Formated date : 01-01-1970 00:00:01.000 = Long = 1000
Formated date : 01-01-1970 00:01:00.000 = Long = 60000
Formated date : 01-01-1970 01:00:00.000 = Long = 3600000
Formated date : 01-01-1970 10:00:00.000 = Long = 36000000
Formated date : 01-01-1970 12:00:00.000 = Long = 43200000
Formated date : 02-01-1970 00:00:00.000 = Long = 86400000
Formated date : 01-01-1971 00:00:00.000 = Long = 31536000000
Formated date : 01-01-2014 00:00:00.000 = Long = 1388534400000
Formated date : 01-01-1970 02:01:00.000 = Long = 7260000
Formated date : 04-12-2014 15:14:44.037 = Long = 1417706084037
Formated date : 31-12-1969 21:59:00.000 = Long = -7260000
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-05 10:19:49
Proste dwa formatery, których użyliśmy:
- Jaki format daty chcemy?
- Który format daty jest rzeczywiście obecny?
Analizujemy pełny format daty do czasu:
date="2016-05-06 16:40:32";
public static String setDateParsing(String date) throws ParseException {
// This is the format date we want
DateFormat mSDF = new SimpleDateFormat("hh:mm a");
// This format date is actually present
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-mm-dd hh:mm");
return mSDF.format(formatter.parse(date));
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 23:43:34
Możesz użyć SimpleDateformat do zmiany ciągu znaków na date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strDate = "2000-01-01";
Date date = new Date(sdf.parse(strDate).getTime());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 23:46:17
Miałem zadanie, w którym musiałem napisać kod, który pobierze dowolny ciąg znaków i spróbuje przekonwertować go na datę, gdy format łańcucha nie jest znany z góry.
Napisałem ciekawe narzędzie. Oto artykuł, który opisuje ideę: Java 8 java.pakiet czasu: parsowanie dowolnego ciągu znaków do daty . Zostało to zaimplementowane w Javie 8, ale pomysł mógł być zaimplementowany również we wcześniejszych wersjach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-22 23:45:42
Dla Android
Kalendarz.getInstance ().getTime() daje
Thu Jul 26 15:54:13 GMT+05:30 2018
Użyj
String oldDate = "Thu Jul 26 15:54:13 GMT+05:30 2018";
DateFormat format = new SimpleDateFormat("EEE LLL dd HH:mm:ss Z yyyy");
Date updateLast = format.parse(oldDate);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-26 10:35:02
Spróbuj tego
String date = get_pump_data.getString("bond_end_date");
DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date datee = (Date)format.parse(date);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-31 08:34:15