Ik wil een java.util.Date
-object converteren naar een String
in Java.
Het formaat is 2010-05-30 22:15:52
Antwoord 1, autoriteit 100%
Converteer een Datumnaar een Stringmet DateFormat#format
methode:
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.Date
naar een Instant
. De Instant
class 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.Date
als java.time.Instant
bevinden zich in UTC. Als u de datum en tijd als UTC wilt zien, het zij zo. Roep toString
aan 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 Instant
omzetten 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 T
in 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 ZoneId
toe om een ZonedDateTime
te 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 odt
door 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::replace
vermijden. 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 SimpleDateFormat
wat 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 DateTimeFormatter
dat 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
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.class
enSimpleDateFormat
, 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());