Zet java.util.Date om naar String

Ik wil een java.util.Date-object converteren naar een Stringin Java.

Het formaat is 2010-05-30 22:15:52


Antwoord 1, autoriteit 100%

Converteer een Datumnaar een Stringmet DateFormat#formatmethode:

String pattern = "MM/dd/yyyy HH:mm:ss";
// Create an instance of SimpleDateFormat used for formatting 
// the string representation of date according to the chosen pattern
DateFormat df = new SimpleDateFormat(pattern);
// Get the today date 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 todayAsString = df.format(today);
// Print the result!
System.out.println("Today is: " + todayAsString);

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


Antwoord 2, autoriteit 30%

Format formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = formatter.format(date);

Antwoord 3, autoriteit 8%

Commons-lang DateFormatUtilsstaat vol met goodies (als je commons-lang in je klassenpad hebt)

//Formats a date/time into a specific pattern
 DateFormatUtils.format(yourDate, "yyyy-MM-dd HH:mm:SS");

Antwoord 4, autoriteit 3%

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

java.time

De moderne manier is met de java.time-klassen die nu de lastige oude legacy-date-time-klassen vervangen.

Converteer eerst uw java.util.Datenaar een Instant. De Instantclass staat voor een moment op de tijdlijn in UTCmet een resolutie van nanoseconden(maximaal negen (9) cijfers van een decimale breuk).

Conversies van/naar java.time worden uitgevoerd door nieuwe methoden die aan de oude klassen zijn toegevoegd.

Instant instant = myUtilDate.toInstant();

Zowel uw java.util.Dateals java.time.Instantbevinden zich in UTC. Als u de datum en tijd als UTC wilt zien, het zij zo. Roep toStringaan om een ​​tekenreeks te genereren in de standaard ISO 8601-indeling.

String output = instant.toString();  

2014-11-14T14:05:09Z

Voor andere indelingen moet u uw Instantomzetten in de flexibelere OffsetDateTime.

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

odt.toString(): 2020-05-01T21:25:35.957Z

Zie dat code live wordt uitgevoerd op IdeOne.com.

Om een ​​string in de gewenste indeling te krijgen, specificeert u een DateTimeFormatter. U kunt een aangepast formaat opgeven. Maar ik zou een van de vooraf gedefinieerde formatters gebruiken (ISO_LOCAL_DATE_TIME), en vervang de Tin de uitvoer door een SPACE.

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

2014-11-14 14:05:09

Trouwens, ik raad dit soort formaat niet aan waarbij je met opzet de offset-from-UTC verliest of tijdzone-informatie. Creëert onduidelijkheid over de betekenis van de datum-tijdwaarde van die string.

Pas ook op voor gegevensverlies, aangezien elke fractie van een seconde wordt genegeerd (effectief afgekapt) in de weergave van uw String van de datum-tijd-waarde.

Om datzelfde moment te zien door de lens van een bepaalde regio’s muurkloktijd, pas een ZoneIdtoe om een ​​ZonedDateTimete krijgen.

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

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

Als u een opgemaakte String wilt genereren, doet u hetzelfde als hierboven, maar vervangt u odtdoor zdt.

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

2014-11-14 14:05:09

Als je deze code een zeer groot aantal keren uitvoert, wil je misschien wat efficiënter zijn en de aanroep naar String::replacevermijden. Als u die oproep laat vallen, wordt uw code ook korter. Geef desgewenst uw eigen opmaakpatroon op in uw eigen DateTimeFormatter-object. Cache deze instantie als een constante of lid voor hergebruik.

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

Pas die formatter toe door de instantie door te geven.

String output = zdt.format( f );

Over java.time

De java.timeframework is ingebouwd in Java 8 en hoger. Deze klassen vervangen de lastige oude datum-tijdklassen zoals java.util.Date, .Calendar, & java.text.SimpleDateFormat.

Het Joda-Time-project, nu in onderhoudsmodus, adviseert migratie naar java.time.

Zie de Oracle-zelfstudievoor meer informatie. En zoek Stack Overflow voor veel voorbeelden en uitleg.

Veel van de java.time-functionaliteit is teruggekoppeld naar Java 6 & 7 in ThreeTen-Backporten verder aangepast aan Androidin ThreeTenABP(zie Hoe te gebruiken ).

Het ThreeTen-Extra-project breidt java.time uit met extra klassen. Dit project is een proeftuin voor mogelijke toekomstige toevoegingen aan java.time.


Antwoord 5, autoriteit 3%

Alternatieve oneliners in het oude 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);

Dit gebruikt Opmaaken relatieve indexering in plaats van SimpleDateFormatwat niet thread-safe, btw.

Iets meer repetitief, maar heeft slechts één verklaring nodig.
Dit kan in sommige gevallen handig zijn.


Antwoord 6

Waarom gebruik je Joda (org.joda.time.DateTime) niet?
Het is eigenlijk een oneliner.

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

Antwoord 7

Het lijkt erop dat u zoekt naar SimpleDateFormat.

Formaat: jjjj-MM-dd kk:mm:ss


Antwoord 8

In één opname 😉

Om de datum te krijgen

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

Om de tijd te krijgen

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

Om de datum en tijd te krijgen

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

Veel plezier met coderen 🙂


Antwoord 9

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

Antwoord 10

De gemakkelijkste manier om het te gebruiken is als volgt:

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

waarbij “jjjj-MM-dd’T’HH:mm:ss” het formaat van de leesdatum is

uitvoer: zo 14 apr 16:11:48 EEST 2013

Opmerkingen: HH vs hh
– HH verwijst naar 24-uurs tijdformaat
– hh verwijst naar de 12-uursnotatie


Antwoord 11

Als je alleen de tijd vanaf de datum nodig hebt, kun je gewoon de functie van String gebruiken.

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

Hiermee wordt automatisch het tijdgedeelte van de tekenreeks geknipt en opgeslagen in de timeString.


Antwoord 12

Hier zijn voorbeelden van het gebruik van nieuwe Java 8 Time APIom legacyjava.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

Het is prettig aan DateTimeFormatterdat het efficiënt in de cache kan worden opgeslagen omdat het thread-safe is (in tegenstelling tot SimpleDateFormat).

Lijst met vooraf gedefinieerde formatters en patroonnotatie referentie.

Tegoed:

Hoe kan ik datums ontleden/formatteren met LocalDateTime? (Java 8)

Java8 java.util.Datumconversie naar java.time .ZonedDateTime

Direct formatteren naar string

Wat is het verschil tussen Java 8 ZonedDateTime en OffsetDateTime?


Antwoord 13

Probeer dit,

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

Uitvoer:

2013-05-14 17:07:21

Raadpleeg onderstaande links voor meer informatie over datum- en tijdnotatie in Java

Helpcentrum van Oracle

Voorbeeld van datum en tijd in java


Antwoord 14

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
}

Antwoord 15

Laten we dit proberen

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

Of een hulpprogramma-functie

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

Van Converteer datum naar string in Java


Antwoord 16

   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

Antwoord 17

Date date = new Date();
String strDate = String.format("%tY-%<tm-%<td %<tH:%<tM:%<tS", date);

Antwoord 18

Eenregelige optie

Met deze optie kun je gemakkelijk in één regel de werkelijke datum schrijven.

Houd er rekening mee dat dit gebruikmaakt van Calendar.classen SimpleDateFormat, en dan is het niet
logisch om het onder Java8 te gebruiken.

yourstringdate =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());

LEAVE A REPLY

Please enter your comment!
Please enter your name here

3 × 3 =

Other episodes