Conversion de la chaîne de caractères Java à la date

Quelle est la meilleure façon de convertir un String dans le format '2 janvier 2010' en un Date en Java?

finalement, je veux faire éclater le mois, le jour, et l'année comme des entiers pour que je puisse utiliser

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

pour convertir la date en temps.

749
demandé sur Mahozad 2010-11-18 18:53:01
la source

14 ответов

C'est la manière forte, et ces méthodes de setter java.util.Date ont été dépréciées depuis Java 1.1 (1997). formate simplement la date en utilisant SimpleDateFormat en utilisant un modèle de format correspondant à la chaîne de caractères .

dans votre cas spécifique de "2 janvier 2010" comme chaîne de saisie:

  1. , "janvier" est le texte intégral mois, donc utiliser le MMMM modèle
  2. "2" est le court jour de mois, alors utilisez le modèle d pour cela.
  3. "2010" est l'année à 4 chiffres, donc utilisez le modèle yyyy pour lui.

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

notez l'importance de l'argument explicite Locale . Si vous l'omettez, alors il utilisera le paramètres régionaux par défaut qui n'est pas nécessairement l'anglais utilisé dans le nom du mois de la chaîne d'entrée. Si les paramètres régionaux ne correspond pas avec le entrée chaîne, alors vous obtiendriez confusément un java.text.ParseException même si quand le modèle de format semble valide.

voici un extrait de pertinence de le javadoc , énumérant tous les modèles de format disponibles:

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

noter que les motifs sont sensibles à la casse et que les motifs textuels de quatre caractères ou plus représentent la forme complète; autrement, une forme abrégée ou abrégée est utilisée si disponible. Si par exemple la MMMMM ou plus est inutile.

voici quelques exemples de modèles valides SimpleDateFormat pour analyser une chaîne donnée à date:

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

une note importante est que SimpleDateFormat est et non . En d'autres termes, vous ne devriez jamais le déclarer et l'assigner comme une variable statique ou d'instance et ensuite le réutiliser à partir de différentes méthodes/threads. Vous devez toujours le créer tout nouveau dans le cadre de la méthode Local scope.


Java 8 update

si vous êtes sur Java 8 ou une version plus récente, utilisez DateTimeFormatter (aussi ici, cliquez sur le lien pour voir tous les modèles de formats prédéfinis et disponibles; le tutoriel est disponible ici ). Cette nouvelle API est inspirée 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

Note: si votre modèle de format arrive à contenir la partie de temps ainsi, puis utiliser LocalDateTime#parse(text, formatter) au lieu de LocalDate#parse(text, formatter) . Et, si votre modèle de format contient aussi le fuseau horaire, utilisez ZonedDateTime#parse(text, formatter) à la place.

voici un extrait de pertinence de the javadoc , énumérant tous les modèles de format disponibles:

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;

ne notez pas qu'il a plusieurs prédéfinis de formateurs pour le plus populaire des modèles. Ainsi, au lieu par exemple de DateTimeFormatter.ofPattern("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH); , vous pouvez utiliser DateTimeFormatter.RFC_1123_DATE_TIME . Cela est possible parce qu'ils sont, au contraire de SimpleDateFormat , thread safe. Vous pouvez donc également définir votre propre, si nécessaire.

pour un format de chaîne de caractères d'entrée particulier, vous n'avez pas besoin d'utiliser une date explicite DateTimeFormatter : une norme ISO 8601 , comme 2016-09-26T17: 44: 57Z, peut être analysé directement avec LocalDateTime#parse(text) comme il utilise déjà le format ISO_LOCAL_DATE_TIME . De même, LocalDate#parse(text) analyse une date ISO sans la composante temporelle (voir ISO_LOCAL_DATE ), et ZonedDateTime#parse(text) est une date ISO avec un décalage et un fuseau horaire ajoutés (voir ISO_ZONED_DATE_TIME ).

1448
répondu BalusC 2018-04-10 15:06:38
la source

Ah oui the Java Date discussion, again. Pour traiter la manipulation de date nous utilisons Date , calendrier , GregorianCalendar , et SimpleDateFormat . Par exemple, en utilisant votre date de janvier comme entrée:

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

alors vous pouvez manipuler cela avec quelque chose comme:

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));
63
répondu pn1 dude 2010-11-19 06:27:40
la source
String str_date = "11-June-07";
DateFormat formatter;
Date date;
formatter = new SimpleDateFormat("dd-MMM-yy");
date = formatter.parse(str_date);
38
répondu Ruthreshwar 2018-03-23 02:36:33
la source

avec Java 8 nous obtenons une nouvelle API Date / Heure ( JSR 310 ).

la façon suivante peut être utilisée pour analyser la date en Java 8 sans compter sur 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 est la classe Java 8 standard pour représenter une date (sans temps). Si vous voulez analyser des valeurs qui contiennent des informations sur la date et l'heure, vous devez utiliser LocalDateTime . Pour les valeurs avec des fuseaux horaires, utilisez ZonedDateTime . Tous deux fournissent une méthode parse() similaire à LocalDate :

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

La liste des caractères de formatage de 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;
31
répondu micha 2016-02-23 03:11:25
la source

bien que certaines des réponses soient techniquement correctes, elles ne sont pas recommandées.

  • La java.util.Les classes de Date et de calendrier sont notoirement pénibles. En raison de défauts dans la conception et la mise en œuvre, évitez-les. Heureusement, nous avons le choix entre deux autres excellentes bibliothèques.:
    • Joda-Time

      ce populaire open-source gratuit la bibliothèque peut être utilisée dans plusieurs versions de Java. De nombreux exemples de son utilisation peuvent être trouvés sur StackOverflow. La lecture de certains d'entre eux vous aidera à vous mettre à jour rapidement.
    • de java.temps.* trousse

      cette nouvelle série de classes est inspirée de Joda-Time et définie par JSR 310. Ces classes sont intégrées dans Java 8. Un projet est en cours pour rétroporter ces classes à Java 7, mais ce rétroportage est pas soutenu par Oracle.
  • comme Kristopher Johnson l'a noté à juste titre dans son commentaire sur la question, les autres réponses ne tiennent pas compte des questions vitales de:
    • Time of Day

      la Date comporte à la fois une date et une heure)
    • fuseau Horaire

      Le début d'une journée dépend du fuseau horaire. Si vous ne parvenez pas pour spécifier un fuseau horaire, le fuseau horaire par défaut de la JVM est appliqué. Cela signifie que le comportement de votre code peut changer lorsqu'il est exécuté sur d'autres ordinateurs ou avec un réglage modifié du fuseau horaire. Probablement pas ce que vous voulez.
    • Locale

      la langue de la Locale précise comment interpréter les mots (nom du mois et du jour) rencontrés lors de l'analyse. (Le réponse de BalusC gère cela correctement.) En outre, les Paramètres régionaux affecte la sortie de certains formateurs lors de la génération d'une représentation de chaîne de votre date-heure.

Joda-Time

quelques notes à propos de Joda-Time suivent.

Fuseau Horaire

Dans Joda-Time , un DateTime objet connaît vraiment son propre fuseau horaire. Cela contraste avec la java.util.Classe de Date qui semble d'avoir un fuseau horaire mais ne le fait pas.

notez dans l'exemple de code ci-dessous comment nous passons un objet time zone au formatteur qui parse la chaîne. Le fuseau horaire est utilisé pour interpréter cette date-heure comme ayant eu lieu dans ce fuseau horaire. Vous devez donc réfléchir et déterminer le fuseau horaire représenté par cette chaîne de caractères.

puisque vous n'avez pas de portion de temps dans votre chaîne de saisie, Joda-Time assigne le premier moment du jour du fuseau horaire spécifié que le temps de la journée. Habituellement, cela signifie 00:00:00 , mais pas toujours, en raison de heure D'été (HAE) ou d'autres anomalies. D'ailleurs, vous pouvez faire la même chose pour n'importe quelle instance DateTime en appelant withTimeAtStartOfDay .

Formateur Motif

les caractères utilisés dans un formatter's pattern sont similaires en Joda-Time à ceux de java.util.Date/Calendrier mais pas exactement le même. Lisez attentivement le doc.

immutabilité

nous utilisons habituellement les classes immuables dans Joda-Time. Plutôt que de modifier un objet Date-Heure existant, nous appelons des méthodes qui créent une nouvelle instance basée sur l'autre objet avec la plupart des aspects copiés sauf là où des modifications étaient souhaitées. Un exemple est l'appel à withZone à la dernière ligne ci-dessous. immutabilité aide à rendre Joda-Time très sûr, et peut également rendre certains travaux plus clair.

Conversion

vous aurez besoin de java.util.Dater les objets pour les utiliser avec d'autres classes/framework qui ne connaissent pas les objets Joda-Time. Heureusement, il est très facile de se déplacer d'avant en arrière.

en partant d'une java.util.Date objet (ici nommé date ) to Joda-Time DateTime...

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

va de L'autre côté de Joda-Time à un java.util.Date objet ...

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

Code Échantillon

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

Lors de l'exécuter...

dateTime: 2010-01-02T00:00:00.000-10:00
dateTime in UTC/GMT: 2010-01-02T10:00:00.000Z
21
répondu Basil Bourque 2017-05-23 14:47:29
la source

en traitant avec la classe SimpleDateFormat, il est important de se rappeler que Date n'est pas thread-safe et que vous ne pouvez pas partager un seul objet Date avec plusieurs threads.

il y a aussi une grande différence entre" m "et" M " lorsque le petit boîtier est utilisé pour les minutes et le boîtier capital est utilisé pour le mois. De même avec "d" et "d". Cela peut entraîner des bogues subtils qui sont souvent négligées. Voir Javadoc ou Guide to Convertissez la chaîne de caractères à la date en Java pour plus de détails.

17
répondu Jim 2018-03-23 02:32:02
la source
    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();
    }

ça me va.

14
répondu Luna Kong 2018-03-23 02:40:05
la source

aussi, SimpleDateFormat n'est pas disponible avec certaines des technologies côté client, comme GWT .

C'est une bonne idée d'aller pour le Calendrier.getInstance(), et votre exigence est de comparer deux dates; aller de longue date.

6
répondu Vaishali Kulkarni 2018-03-23 02:35:22
la source

mon humble programme de test. Je l'utilise pour jouer avec le formater et rechercher de longues dates que je trouve dans les log-files (mais qui les a mis là...).

mon programme d'essai:

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

résultats des essais:

===== 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
répondu Dimitri Dewaele 2014-12-05 13:19:49
la source

deux formateurs simples que nous avons utilisés:

  1. quel format de date voulons-nous?
  2. quelle date de format est réellement présente?

Nous analyser la date format de l'heure:

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));
}
5
répondu siddharth patel 2018-03-23 02:43:34
la source

vous pouvez utiliser SimpleDateformat pour changer la chaîne de caractères à la date

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strDate = "2000-01-01";
Date date = new Date(sdf.parse(strDate).getTime());
4
répondu harun ugur 2018-03-23 02:46:17
la source

j'ai eu une tâche où j'ai dû écrire du code qui prendrait n'importe quelle chaîne et essaierait de la convertir à une date où le format de la chaîne n'est pas connu à l'avance.

j'ai écrit un utilitaire intéressant. Voici l'article qui décrit l'idée: Java 8 java.package: analyse d'une chaîne de date . Ceci a été implémenté dans Java 8, mais l'idée pourrait être implémentée dans les versions précédentes.

1
répondu Michael Gantman 2018-03-23 02:45:42
la source

Pour Android

calendrier.getInstance().getTime() donne

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

Utiliser

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);
1
répondu Code Spy 2018-07-26 13:35:02
la source

Essayez cette

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
répondu Madhuka Dilhan 2016-05-31 11:34:15
la source

Autres questions sur