kzen.dev
  • Întrebări
  • Tag-uri
  • Utilizatori
Notificări
Recompense
Înregistrare
După înregistrare, veți primi notificări despre răspunsurile și comentariile la întrebările DVS.
Logare
Dacă aveţi deja un cont, autentificaţi-vă pentru a verifica notificările noi.
Aici vor fi recompensele pentru întrebările, răspunsurile și comentariile adăugate sau modificate.
Mai mult
Sursă
Editează
 littleK
littleK
Question

Java string la data de conversie

Ceea ce este cel mai bun mod de a converti un Șir de caractere în format 'ianuarie 2, 2010' de la un "Data" în Java?

În cele din urmă, vreau să iasă luna, ziua și anul, ca numere întregi, astfel încât să pot folosi

Date date = new Date();
date.setMonth()..
date.setYear()..
date.setDay()..
date.setlong currentTime = date.getTime();

pentru a converti la data în timp.

844 2010-11-18T15:53:01+00:00 13
 Mahozad
Mahozad
Întrebarea editată 25 iunie 2018 в 1:53
Programare
java
string
time
date
data-conversion
Solution / Answer
 BalusC
BalusC
18 noiembrie 2010 в 3:55
2010-11-18T15:55:27+00:00
Mai mult
Sursă
Editează
#11367821

Ca's la fel de greu, iar cei java.util.Data de metode setter au fost dezaprobată de Java 1.1 (1997). Pur și simplu, format data, folosind SimpleDateFormat folosind un format de model de potrivire de intrare string.

În cazul specific al "ianuarie 2, 2010" ca șirul de intrare:

  1. "ianuarie" este textul integral luna, asa ca foloseste MMMM model pentru ea
  2. "2" este cea mai scurtă zi-de-lună, deci de a folosi " d " model pentru ea.
  3. "2010" este format din 4 cifre, anul, asa ca foloseste aaaa model pentru ea.
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

Rețineți importanța explicit "Locale" argument. Dacă îl omite, atunci se va folosi default locale, care nu este neapărat limba engleză așa cum este folosit în luna numele șirului de intrare. Dacă locale nu't se potrivesc cu șirul de intrare, atunci ar confuzie obține un java.text.ParseException` chiar dacă atunci când formatul model pare valabil.

Aici's un extras de relevanță din javadoc, listarea toate disponibile în format modele:

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

Rețineți că modelele sunt sensibile la majuscule și că textul bazate pe modele de patru sau mai multe caractere reprezintă forma completă; în caz contrar, un scurt sau o formă prescurtată este folosit, dacă este disponibil. Deci, de exemplu, MMMMM sau mai mult nu este necesar.

Aici sunt câteva exemple de valid SimpleDateFormat modele pentru a analiza un șir dat la data de:

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

O notă importantă este că SimpleDateFormat` e nu thread-safe. Cu alte cuvinte, niciodată nu ar trebui să declare și atribuiți-l ca un statică sau variabilă instanță și apoi reutiliza la diferite metode/fire. Întotdeauna trebuie să-l creeze brand nou termen de metoda de aplicare locală.


Java 8 update

Dacă se întâmplă să fie pe Java 8 sau mai nou, apoi utilizați DateTimeFormatter (de asemenea, aici, faceți clic pe link pentru a vedea toate predefinite formatters și disponibile în format modele; tutorial este disponibil aici). Acest nou API este inspirat de 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

Notă: dacă formatul model se întâmplă să conțină timp, o parte la fel de bine, apoi utilizați LocalDateTime#parse(text, formatare) în loc de LocalDate#parse(text, formatare). Și, dacă formatul model se întâmplă să conțină fusul orar fel de bine, apoi utilizați ZonedDateTime#parse(text, formatare) în loc.

Aici's un extras de relevanță din javadoc, listarea toate disponibile în format modele:

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;

Nu act de faptul că acesta are mai multe predefinite formatters pentru cele mai populare modele. Deci, în loc de, de exemplu DateTimeFormatter.ofPattern("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLEZĂ);, ai putea folosi DateTimeFormatter.RFC_1123_DATE_TIME. Acest lucru este posibil, deoarece acestea sunt, dimpotrivă, să SimpleDateFormat, fir de siguranță. Ai putea astfel defini, de asemenea, propria dvs., dacă este necesar.

Pentru un anumit input string format, don't nevoie pentru a utiliza explicit DateTimeFormatter: un standard ISO 8601 în prezent, ca 2016-09-26T17:44:57Z, poate fi analizat direct cu LocalDateTime#parse(text) cum se utilizează deja ISO_LOCAL_DATE_TIME formatorului. În mod similar, LocalDate#parse(text) analizează un ISO dată, fără componenta de timp (a se vedea ISO_LOCAL_DATE), și ZonedDateTime#parse(text) analizează un ISO întâlnire cu un offset și fusul orar adăugată (a se vedea ISO_ZONED_DATE_TIME).

 vincrichaud
vincrichaud
Răspuns editat 10 aprilie 2018 в 12:06
Parsing and Formatting (The Java™ Tutorials > Date Time > Standard Calendar)
This date-time Java tutorial describes how to use the java.time APIs introduced in JDK 8 to write date and time code. The core package uses the standard calendar as defined in the ISO calendar system.
docs.oracle.com
1591
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
pn1 dude
pn1 dude
19 noiembrie 2010 в 3:27
2010-11-19T03:27:40+00:00
Mai mult
Sursă
Editează
#11367822

Ah da Java Data discuție, din nou. Să se ocupe cu data de manipulare folosim Data, Calendar, GregorianCalendar, SimpleDateFormat. De exemplu, folosind ianuarie, data de intrare:

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));

Apoi, puteți manipula cu ceva de genul:

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));
71
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
 Ruthreshwar
Ruthreshwar
15 ianuarie 2013 в 7:02
2013-01-15T07:02:31+00:00
Mai mult
Sursă
Editează
#11367825
String str_date = "11-June-07";
DateFormat formatter;
Date date;
formatter = new SimpleDateFormat("dd-MMM-yy");
date = formatter.parse(str_date);
46
0
 micha
micha
4 martie 2014 в 6:56
2014-03-04T18:56:18+00:00
Mai mult
Sursă
Editează
#11367829

Cu Java 8 avem un nou Data / Ora API (JSR 310).

Felul următor poate fi folosit pentru a analiza data în Java 8, fără bazându-se pe Joda-Time:

 String str = "January 2nd, 2010";

// if we 2nd even we have changed in pattern also it is not working please workout with 2nd 
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM Q, 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 este Java standard 8 clasa reprezentând o data (fără oră). Dacă doriți pentru a analiza valori care să conțină data și ora de informații ar trebui să utilizați LocalDateTime. Pentru valorile orare de utilizare ZonedDateTime. Ambele oferă o parse()metoda similare cuLocalDate`:

LocalDateTime dateWithTime = LocalDateTime.parse(strWithDateAndTime, dateTimeFormatter);
ZonedDateTime zoned = ZonedDateTime.parse(strWithTimeZone, zoneFormatter);

Lista de formatare de caractere din 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;
Sarvar Nishonboev
Sarvar Nishonboev
Răspuns editat 26 februarie 2019 в 2:30
39
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
Basil Bourque
Basil Bourque
13 februarie 2014 в 8:22
2014-02-13T08:22:28+00:00
Mai mult
Sursă
Editează
#11367828

În timp ce unele dintre răspunsurile sunt corecte tehnic, acestea nu sunt recomandabile.

  • Java.util.Data & Calendar clase sunt foarte supărătoare. Pentru că de defecte în proiectarea și punerea în aplicare, evita-le. Din fericire, avem alegerea noastră de alte două excelente data de biblioteci:
  • Joda-Time
    Acest populare open-source gratuit de cost biblioteca poate fi folosit în mai multe versiuni de Java. Multe exemple de utilizare a acestuia pot fi găsite pe StackOverflow. Citind unele dintre acestea vă vor ajuta să obțineți până la viteza de rapid.
  • *[java.timp. pachet]2**
    Acest nou set de clase sunt inspirate de Joda Timp și definite de JSR 310. Aceste clase sunt construite în Java 8. Un proiect este în curs de desfășurare pentru a backport aceste clase în Java 7, dar asta backporting nu este susținută de către Oracle.
  • Ca Joseph Johnson a remarcat în mod corect în comentarii la întrebarea, răspunsurile ignora probleme vitale de:
  • Ora din Zi
    Data are atât o data parte și de un timp-de-zi în parte)
  • Fus Orar
    începutul de o zi, depinde de fusul orar. Dacă nu specificați un interval de timp orar, JVM's, default fusul orar este aplicat. Asta înseamnă că comportamentul codul se poate schimba atunci când rula pe alte calculatoare sau cu o modificare de fus orar setare. Probabil, nu ceea ce vrei.
  • Localizare
    Localizare's limba specifică cum să interpreteze cuvintele (numele de lună și de zi) întâlnite în timpul parsarea. (De răspunde de BalusC se ocupă de acest lucru în mod corespunzător.) De asemenea, Locale afectează producția de unii formatori de când se generează un șir de reprezentare a data-timp.

Joda Timp

Câteva note despre Joda Timp urmeze.

Fusul Orar

În Joda-Time, o DateTime obiectul știe cu adevărat propriu atribuit de fus orar. Acest lucru contrastează java.util.Data clasa care pare să aibă o zonă de timp, dar nu.

Notă în exemplul de cod de mai jos cum am trece-o zonă de timp obiect de formatare care analizează șirul. Asta fusul orar este folosit pentru a interpreta acea dată-timp, ca având loc în care zona de timp. Deci, ai nevoie să se gândească și de a determina zona de timp reprezentată de șirul de intrare.

Când nu mai ai timp porțiune în șirul de intrare, Joda Timp atribuie primul moment al zilei de fusul orar specificat ca timp-de-zi. De obicei, acest lucru înseamnă 00:00:00, dar nu întotdeauna, pentru că de Daylight Saving Time (DST) sau alte anomalii. Apropo, puteți face același lucru pentru orice DateTime exemplu de asteptare withTimeAtStartOfDay.

Formatter Model

Caracterele utilizate într-un formator's model sunt similare în Joda Timp cu cele din java.util.Data/Calendar dar nu exact la fel. Citiți cu atenție doc.

Imutabilitatea

Noi folosim de obicei imuabil clase în Joda Timp. Mai degrabă decât a modifica o Data existente-obiect Timp, facem apel la metode care creează o nouă instanță a bazat pe alte obiect cu cele mai multe aspecte copiat cu excepția cazului în care modificările au fost dorite. Un exemplu este apelul la `withZone în ultima linie de jos. Imutabilitatea ajută pentru a face Joda Timp foarte thread-safe, și poate face, de asemenea, ceva de lucru mai clar.

Conversie

Veți avea nevoie de java.util.Data obiecte pentru a le utiliza cu alte cursuri/cadru care nu știu despre Joda Timp obiecte. Din fericire, este foarte ușor să se mute înainte și înapoi.

De la o java.util.Data obiect (aici numit "data") pentru a Joda Timp DateTime...

org.joda.time.DateTime dateTime = new DateTime( date, timeZone );

O altă direcție de Joda-Timp pentru java.util.Data obiect...

java.util.Date date = dateTime.toDate();

Mostre De Cod

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 ) );

Atunci când a alerga...

dateTime: 2010-01-02T00:00:00.000-10:00
dateTime in UTC/GMT: 2010-01-02T10:00:00.000Z
25
0
 Jim
Jim
2 decembrie 2011 в 1:48
2011-12-02T01:48:55+00:00
Mai mult
Sursă
Editează
#11367823

În timp ce pe de-a face cu SimpleDateFormat clasa, l's important să ne amintim că Data nu este thread-safe și nu pot partaja un singur obiect cu mai multe fire.

De asemenea, nu este mare diferență între "m" și "M" în cazul în care acoperit de caz este folosit pentru minute și capital de caz este folosit pentru lună. La fel cu "d" și "D". Acest lucru poate cauza subtile bug-uri care de multe ori trecut cu vederea. A se vedea Javadoc sau Ghid pentru a Converti Șirul de la Data în Java pentru mai multe detalii.

20
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
Luna Kong
Luna Kong
4 decembrie 2013 в 12:46
2013-12-04T12:46:06+00:00
Mai mult
Sursă
Editează
#11367826
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();
}

Aceasta funcționează bine pentru mine.

Ahmed Ashour
Ahmed Ashour
Răspuns editat 12 februarie 2019 в 5:44
16
0
siddharth patel
siddharth patel
6 mai 2016 в 10:12
2016-05-06T10:12:55+00:00
Mai mult
Sursă
Editează
#11367831

Simplu două formatters am folosit:

  1. Ce format data ne dorim?
  2. Ce format data este de fapt prezent?

Vom analiza data completă a format timp:

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));
}
Peter Mortensen
Peter Mortensen
Răspuns editat 22 martie 2018 в 11:43
6
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
Vaishali Kulkarni
Vaishali Kulkarni
10 decembrie 2012 в 4:16
2012-12-10T16:16:55+00:00
Mai mult
Sursă
Editează
#11367824

De asemenea, SimpleDateFormat nu este disponibil cu unele dintre client-side tehnologii, cum ar fi GWT.

L's o idee bună pentru a merge pentru Calendar.getInstance(), iar cerința este de a compara două date; du-te pentru mult timp data.

6
0
Dimitri Dewaele
Dimitri Dewaele
4 decembrie 2014 в 4:34
2014-12-04T16:34:20+00:00
Mai mult
Sursă
Editează
#11367830

Umila mea de a testa programul. Eu l utilizați pentru a juca în jurul cu formatare și uite-up de mult datele pe care le găsesc în log-files (dar cine le-a pus acolo...).

Mea de test program:

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);        
        }
    }
}

Rezultatele testelor:

===== 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
5
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
harun ugur
harun ugur
25 iulie 2017 в 9:56
2017-07-25T09:56:39+00:00
Mai mult
Sursă
Editează
#11367833

Puteți utiliza SimpleDateformat pentru schimbare șir la data de

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strDate = "2000-01-01";
Date date = new Date(sdf.parse(strDate).getTime());
Peter Mortensen
Peter Mortensen
Răspuns editat 22 martie 2018 в 11:46
5
0
Code Spy
Code Spy
26 iulie 2018 в 10:35
2018-07-26T10:35:02+00:00
Mai mult
Sursă
Editează
#11367834

Sursa Link

Pentru Android

Calendar.getInstance().getTime() oferă

Thu Jul 26 15:54:13 GMT+05:30 2018

Utilizare

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);
Code Spy
Code Spy
Răspuns editat 20 decembrie 2018 в 9:18
2
0
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
Madhuka Dilhan
Madhuka Dilhan
31 mai 2016 в 8:33
2016-05-31T08:33:30+00:00
Mai mult
Sursă
Editează
#11367832

Încercați acest lucru

String date = get_pump_data.getString("bond_end_date");
DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
Date datee = (Date)format.parse(date);
-1
0
Adăugati o întrebare
Categorii
Toate
Tehnologii
Cultură
Viață / Artă
Stiință
Profesii
Afaceri
Utilizatori
Toate
Nou
Populare
1
Andrei Kalinin
Înregistrat 2 săptămâni în urmă
2
Koroleva Ego
Înregistrat 1 lună în urmă
3
Star Lenon
Înregistrat 1 lună în urmă
4
Данил Жевнеров
Înregistrat 1 lună în urmă
5
Анна Литвиненко
Înregistrat 2 luni în urmă
Aveți o întrebare? Adăugați-o pe site-ul nostru și primiți răspuns instant
ro.kzen.dev
DA
DE
EL
ES
FR
ID
IT
JA
LV
NL
NO
PL
PT
RO
RU
SK
TR
ZH
© kzen.dev 2023
Sursă
stackoverflow.com
în cadrul licenței cc by-sa 3.0 cu atribuire