Convertir java.util.Date à la chaîne

je veux convertir un objet java.util.Date en un String en Java.

le format est 2010-05-30 22:15:52

353
demandé sur Vadzim 2011-04-16 04:56:56

16 réponses

en Java, convertissez une Date en chaîne à l'aide d'une chaîne de format:

// Create an instance of SimpleDateFormat used for formatting 
// the string representation of date (month/day/year)
DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

// Get the date today using Calendar object.
Date today = Calendar.getInstance().getTime();        
// Using DateFormat format method we can create a string 
// representation of a date with the defined format.
String reportDate = df.format(today);

// Print what date is today!
System.out.println("Report Date: " + reportDate);

de http://www.kodejava.org/examples/86.html

696
répondu alibenmessaoud 2015-01-22 22:16:51
Format formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = formatter.format(date);
198
répondu Charlie Salts 2011-04-16 01:02:29

Commons-lang DateFormatUtils est plein de goodies (si vous avez commons-lang dans votre classepath)

//Formats a date/time into a specific pattern
 DateFormatUtils.format(yourDate, "yyyy-MM-dd HH:mm:SS");
56
répondu webpat 2013-05-10 10:25:51

tl; dr

myUtilDate.toInstant()  // Convert `java.util.Date` to `Instant`.
          .atOffset( ZoneOffset.UTC )  // Transform `Instant` to `OffsetDateTime`.
          .format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )  // Generate a String.
          .replace( "T" , " " )  // Put a SPACE in the middle.

2014-11-14 14:05:09

de java.temps

La façon moderne est à la java.les classes de temps qui supplantent maintenant les anciennes classes de date-heure gênantes.

convertissez D'abord votre java.util.Date en Instant . La classe Instant représente un moment sur la ligne de temps dans UTC avec une résolution de nanosecondes (jusqu'à neuf (9) chiffres d'une fraction décimale).

Conversions vers / à partir de java.le temps est exécuté par de nouvelles méthodes ajoutées aux anciennes classes.

Instant instant = myUtilDate.toInstant();

vos java.util.Date et java.time.Instant sont en UTC . Si vous voulez voir la date et l'heure UTC, ainsi soit-il. Appeler toString pour générer une chaîne de caractères dans la norme ISO 8601 format.

String output = instant.toString();  

2014-11-14T14: 05 :09Z

pour les autres formats, vous devez transformer votre Instant dans le plus flexible OffsetDateTime .

OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );

odt.toString (): 2014-11-14T14:05:09+00:00

pour obtenir une chaîne dans le format désiré, spécifiez un DateTimeFormatter . Vous pouvez spécifier un format personnalisé. Mais j'utiliserais un des formateurs prédéfinis( ISO_LOCAL_DATE_TIME ), et remplacer le T dans sa sortie par un espace.

String output = odt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
                   .replace( "T" , " " );

2014-11-14 14:05:09

soit dit en passant, je ne recommande pas ce type de format où vous perdez volontairement les informations offset-from-UTC ou fuseau horaire. Crée une ambiguïté quant à la signification de la valeur date-Heure de cette chaîne.

aussi méfiez-vous de la perte de données, car n'importe quelle fraction de seconde est ignorée (effectivement tronquée) dans la représentation de votre chaîne de la valeur date-temps.

pour voir ce même moment à travers la lentille d'une région particulière wall-clock time , appliquer un ZoneId pour obtenir un ZonedDateTime .

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );

zdt.toString (): 2014-11-14T14: 05:09-05: 00[America/Montreal]

pour générer une chaîne formatée, faites la même chose que ci-dessus, mais remplacez odt par zdt .

String output = zdt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
                   .replace( "T" , " " );

2014-11-14 14:05:09

si vous exécutez ce code un très grand nombre de fois, vous pouvez vouloir être un peu plus efficace et éviter l'appel à String::replace . Laisser tomber cet appel fait aussi votre code plus court. Si vous le souhaitez, spécifiez votre propre formatage dans votre propre objet DateTimeFormatter . Cache cette instance en tant que constante ou membre à réutiliser.

DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd HH:mm:ss" );  // Data-loss: Dropping any fractional second.

appliquer ce formatteur en passant l'instance.

String output = zdt.format( f );

à propos de java.temps

Le de java.time framework est construit dans Java 8 et plus tard. Ces classes supplantent les anciennes classes de date ennuyeuses telles que java.util.Date , .Calendar , & java.text.SimpleDateFormat .

le projet Joda-Time , maintenant en mode maintenance , conseille la migration vers java.temps.

pour en savoir plus, voir le Oracle Tutorial . Et rechercher le débordement de la pile pour de nombreux exemples et explications.

Beaucoup de Java.la fonctionnalité time est rétroportée à Java 6 & 7 dans ThreeTen-Backport et ensuite adaptée à Android dans ThreeTenABP (voir 15191310920" comment utiliser... ).

le projet ThreeTen-Extra étend java.temps avec des cours supplémentaires. Ce projet est un terrain d'expérimentation pour d'éventuelles futures additions à java.temps.

18
répondu Basil Bourque 2017-05-23 12:18:20

Alternative one-liners en plain old java:

String.format("The date: %tY-%tm-%td", date, date, date);

String.format("The date: %1$tY-%1$tm-%1$td", date);

String.format("Time with tz: %tY-%<tm-%<td %<tH:%<tM:%<tS.%<tL%<tz", date);

String.format("The date and time in ISO format: %tF %<tT", date);

utilise formater et indexation relative au lieu de SimpleDateFormat qui est non thread-safe , btw.

légèrement plus répétitif, mais ne nécessite qu'une seule déclaration. Cela peut être pratique dans certains cas.

13
répondu Vadzim 2018-08-20 12:42:43

Pourquoi n'utilisez-vous pas Joda (org.joda.temps.DateTime)? En gros, c'est un one-liner.

Date currentDate = GregorianCalendar.getInstance().getTime();
String output = new DateTime( currentDate ).toString("yyyy-MM-dd HH:mm:ss");

// output: 2014-11-14 14:05:09
9
répondu dbow 2014-11-15 00:14:47

on dirait que vous cherchez SimpleDateFormat .

Format: AAAA-MM-JJ kk: mm: ss

7
répondu pickypg 2011-04-16 01:01:54
public static String formateDate(String dateString) {
    Date date;
    String formattedDate = "";
    try {
        date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss",Locale.getDefault()).parse(dateString);
        formattedDate = new SimpleDateFormat("dd/MM/yyyy",Locale.getDefault()).format(date);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return formattedDate;
}
4
répondu Ashish Tiwari 2013-12-31 06:31:29

La meilleure façon de l'utiliser est la suivante:

currentISODate = new Date().parse("yyyy-MM-dd'T'HH:mm:ss", "2013-04-14T16:11:48.000");

où "AAAA-MM-jj'T'HH: mm: ss" est le format de la date de lecture

sortie: Dim Apr 14 16: 11 :48 EEST 2013

Notes: HH vs hh - HH se réfère au format de temps 24h - HH se réfère au format de temps 12h

4
répondu Rami Sharaiyri 2015-09-22 12:24:27

si vous n'avez besoin que de l'heure à partir de la date, vous pouvez simplement utiliser la fonction String.

Date test = new Date();
String dayString = test.toString();
String timeString = dayString.substring( 11 , 19 );

cela coupera automatiquement la partie temporelle de la chaîne et la sauvera à l'intérieur du timeString .

4
répondu funaquarius24 2015-10-07 08:03:02

Voici des exemples d'utilisation de la nouvelle Java 8 time API au format legacy java.util.Date :

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS Z")
        .withZone(ZoneOffset.UTC);
    String utcFormatted = formatter.format(date.toInstant()); 

    ZonedDateTime utcDatetime = date.toInstant().atZone(ZoneOffset.UTC);
    String utcFormatted2 = utcDatetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS Z"));
    // gives the same as above

    ZonedDateTime localDatetime = date.toInstant().atZone(ZoneId.systemDefault());
    String localFormatted = localDatetime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME);
    // 2011-12-03T10:15:30+01:00[Europe/Paris]

    String nowFormatted = LocalDateTime.now().toString(); // 2007-12-03T10:15:30.123

C'est gentil à propos de DateTimeFormatter qu'il peut être efficacement mis en cache comme il n'est pas thread-safe (à la différence de SimpleDateFormat ).

Liste de prédéfinis formateurs et le modèle de notation de référence .

crédits:

Comment faire analyser / formater les dates avec LocalDateTime? (Java 8)

Java8 java.util.Conversion de Date en java.temps.ZonedDateTime

Format Instant à chaîne

Quelle est la différence entre java 8 ZonedDateTime et OffsetDateTime?

3
répondu Vadzim 2017-05-23 12:26:33

Essayez cette,

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class Date
{
    public static void main(String[] args) 
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String strDate = "2013-05-14 17:07:21";
        try
        {
           java.util.Date dt = sdf.parse(strDate);         
           System.out.println(sdf.format(dt));
        }
        catch (ParseException pe)
        {
            pe.printStackTrace();
        }
    }
}

sortie:

2013-05-14 17:07:21

pour en savoir plus sur le formatage date et heure en java, reportez-vous aux liens ci-dessous

Oracle Du Centre D'Aide

exemple D'Heure de Date en java

2
répondu Shiva 2017-11-06 11:38:52

en tir simple ;)

pour obtenir la Date

String date = new SimpleDateFormat("yyyy-MM-dd",   Locale.getDefault()).format(new Date());

Pour obtenir le Temps

String time = new SimpleDateFormat("hh:mm", Locale.getDefault()).format(new Date());

pour obtenir la date et l'heure

String dateTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefaut()).format(new Date());

codage Heureux :)

2
répondu S.D.N Chanaka Fernando 2018-02-03 20:43:11
public static void main(String[] args) 
{
    Date d = new Date();
    SimpleDateFormat form = new SimpleDateFormat("dd-mm-yyyy hh:mm:ss");
    System.out.println(form.format(d));
    String str = form.format(d); // or if you want to save it in String str
    System.out.println(str); // and print after that
}
1
répondu Artanis 2015-03-25 21:41:22

essayons

public static void main(String args[]) {

    Calendar cal = GregorianCalendar.getInstance();
    Date today = cal.getTime();
    DateFormat df7 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    try {           
        String str7 = df7.format(today);
        System.out.println("String in yyyy-MM-dd format is: " + str7);          
    } catch (Exception ex) {
      ex.printStackTrace();
    }
}

ou une fonction d'utilité

public String convertDateToString(Date date, String format) {
    String dateStr = null;
    DateFormat df = new SimpleDateFormat(format);

    try {
        dateStr = df.format(date);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return dateStr;
}

à Partir de Convertir une Date en Chaîne de caractères en Java

1
répondu David Pham 2016-09-26 16:25:09
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String date = "2010-05-30 22:15:52";
    java.util.Date formatedDate = sdf.parse(date); // returns a String when it is parsed
    System.out.println(sdf.format(formatedDate)); // the use of format function returns a String
1
répondu Dulith De Costa 2018-07-23 14:52:16