Aku ingin mengkonversi jawa.util.Tanggal
keberatan String
di Jawa.
Format 2010-05-30 22:15:52
Mengkonversi Tanggal ** ke String** menggunakan DateFormat#format
metode:
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);
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
Cara modern ini dengan jawa.waktu kelas yang sekarang menggantikan merepotkan tua warisan tanggal waktu kelas.
Pertama mengkonversi jawa.util.Upload
untuk yang Instan
. The Instan
kelas merupakan saat pada waktu di UTC dengan resolusi nano (hingga sembilan (9) digit pecahan desimal).
Konversi ke/dari jawa.waktu yang dilakukan oleh metode-metode baru ditambahkan ke old kelas.
Instant instant = myUtilDate.toInstant();
Kedua jawa.util.Date
dan jawa.waktu.Instan
di UTC. Jika anda ingin melihat tanggal dan waktu UTC, jadi itu. Panggilan toString
untuk menghasilkan String di standar ISO 8601 format.
String output = instant.toString();
2014-11-14T14:05:09Z
Untuk format lain, anda perlu untuk mengubah anda Instan
menjadi lebih fleksibel OffsetDateTime
.
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );
odt.toString(): 2014-11-14T14:05:09+00:00
Untuk mendapatkan sebuah String dalam format yang diinginkan, tentukan DateTimeFormatter
. Anda bisa menentukan format kustom. Tapi saya akan menggunakan salah satu dari yang telah ditetapkan formatters (ISO_LOCAL_DATE_TIME
), dan mengganti T
dalam output dengan RUANG.
String output = odt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " );
2014-11-14 14:05:09
By the way, saya tidak merekomendasikan format semacam ini di mana anda sengaja kehilangan offset dari UTC atau informasi zona waktu. Menciptakan ambiguitas sebagai makna bahwa string tanggal-nilai waktu.
Juga berhati-hatilah dari kehilangan data, karena setiap pecahan kedua adalah diabaikan (efektif terpotong) dalam String representasi tanggal-nilai waktu.
Untuk melihat saat yang sama melalui lensa tertentu beberapa wilayah dinding-jam waktu, menerapkan ZoneId
untuk mendapatkan ZonedDateTime
.
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
zdt.toString(): 2014-11-14T14:05:09-05:00[Amerika/Montreal]
Untuk menghasilkan String diformat, melakukan hal yang sama seperti diatas tapi ganti odt
dengan zdt
.
String output = zdt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " );
2014-11-14 14:05:09
Jika mengeksekusi kode ini jumlah yang sangat besar waktu, anda mungkin ingin menjadi sedikit lebih efisien dan menghindari panggilan untuk String::ganti
. Menjatuhkan panggilan itu juga membuat kode anda lebih pendek. Jika jadi diinginkan, menentukan sendiri format pola anda sendiri DateTimeFormatter
objek. Cache hal ini sebagai konstan atau anggota untuk digunakan kembali.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd HH:mm:ss" ); // Data-loss: Dropping any fractional second.
Menerapkan formatter dengan melewati contoh.
String output = zdt.format( f );
The jawa.waktu kerangka dibangun ke Jawa 8 dan kemudian. Kelas-kelas ini menggantikan merepotkan tanggal tua-waktu kelas seperti jawa.util.Tanggal
, .Kalender
, & java.text.SimpleDateFormat
.
The Joda-Waktu proyek, sekarang di maintenance mode, menyarankan migrasi ke pulau jawa.waktu.
Untuk mempelajari lebih lanjut, lihat Oracle Tutorial. Dan pencarian Stack Overflow untuk banyak contoh dan penjelasan.
Banyak dari jawa.waktu fungsi back-porting ke Jawa 6 & 7 di ThreeTen-Backport dan selanjutnya disesuaikan untuk Android di ThreeTenABP (lihat Cara menggunakan...).
The ThreeTen-Extra proyek meluas jawa.waktu dengan kelas tambahan. Proyek ini adalah ajang pembuktian bagi masa depan mungkin penambahan jawa.waktu.
Altenative satu-liners di 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);
Ini menggunakan Formatter dan relatif pengindeksan bukan SimpleDateFormat
yang tidak thread-safe, btw.
Sedikit lebih berulang-ulang tetapi hanya membutuhkan satu pernyataan. Ini mungkin berguna dalam beberapa kasus.
Mengapa don't anda gunakan Joda (org.joda.waktu.DateTime)? It's pada dasarnya adalah 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
Dalam satu tembakan ;)
Untuk mendapatkan Tanggal
String date = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());
Untuk mendapatkan Waktu
String time = new SimpleDateFormat("hh:mm", Locale.getDefault()).format(new Date());
Untuk mendapatkan tanggal dan waktu
String dateTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefaut()).format(new Date());
Happy coding :)
Jika anda hanya membutuhkan waktu dari saat ini, anda hanya dapat menggunakan fitur dari String.
Date test = new Date();
String dayString = test.toString();
String timeString = dayString.substring( 11 , 19 );
Ini otomatis akan memotong waktu bagian dari String dan menyimpannya di dalam timeString
.
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;
}
Cara termudah untuk menggunakannya adalah sebagai berikut:
currentISODate = new Date().parse("yyyy-MM-dd'T'HH:mm:ss", "2013-04-14T16:11:48.000");
mana "yyyy-MM-dd'T'HH:mm:ss" adalah format tanggal membaca
output: Sun Apr 14 16:11:48 EEST 2013
Catatan: HH vs hh
Berikut ini adalah contoh penggunaan baru Jawa 8 Waktu API untuk format legacy jawa.util.Tanggal
:
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
Itu bagus tentang DateTimeFormatter
yang dapat secara efisien cache seperti yang thread-safe (tidak seperti SimpleDateFormat
).
Daftar yang telah ditetapkan fomatters dan pola notasi referensi.
Kredit:
https://stackoverflow.com/questions/22463062/how-to-parse-format-dates-with-localdatetime-java-8
https://stackoverflow.com/questions/25229124/format-instant-to-string
Coba ini,
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();
}
}
}
Output:
2013-05-14 17:07:21
Untuk lebih lanjut tentang tanggal dan waktu format di jawa merujuk link di bawah ini
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
}
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
Let's ini mencoba
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();
}
}
Atau fungsi utilitas
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;
}
Salah satu opsi Baris
Opsi ini mendapat satu baris untuk menulis tanggal yang sebenarnya.
Harap dicatat bahwa ini adalah menggunakan
Calendar.class
danSimpleDateFormat
, dan kemudian itu's tidak logis untuk menggunakannya di bawah Java8.
yourstringdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Calendar.getInstance().getTime());