Java'da şu anki tarihi nasıl dizeye çevirebilirim?
Java'da şu anki tarihi nasıl dizeye çevirebilirim?
Yanıtlar:
String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
// GET DATE & TIME IN ANY FORMAT
import java.util.Calendar;
import java.text.SimpleDateFormat;
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";
public static String now() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
return sdf.format(cal.getTime());
}
Buradan alındı
Calendar
daha arzu edilir Date
?
// On the form: dow mon dd hh:mm:ss zzz yyyy
new Date().toString();
Bir DateFormat
uygulama kullanın ; ör SimpleDateFormat
.
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String data = df.format(new Date());
LocalDate.now()
.toString()
2017/01/23
İstenilen / beklenen saat dilimini açıkça belirtmek daha iyidir.
LocalDate.now( ZoneId.of( "America/Montreal" ) )
.toString()
Java 8 ve sonraki sürümlerden itibaren modern yol, java.time çerçevesidir.
Herhangi bir anda tarih dünya çapında değişiklik göstereceği için saat dilimini belirtin.
ZoneId zoneId = ZoneId.of( "America/Montreal" ) ; // Or ZoneOffset.UTC or ZoneId.systemDefault()
LocalDate today = LocalDate.now( zoneId ) ;
String output = today.toString() ;
2017/01/23
Varsayılan olarak, standart ISO 8601 biçiminde bir Dize alırsınız .
Diğer biçimler için java.time.format.DateTimeFormatter
sınıfı kullanın .
Java.time çerçevesi daha sonra Java 8 ve yerleşiktir. Bu sınıflar zahmetli eski yerini mirası gibi tarih-saat sınıfları java.util.Date
, Calendar
& SimpleDateFormat
.
Şu anda bakım modunda olan Joda-Time projesi, java.time sınıflarına geçişi önerir .
Daha fazla bilgi edinmek için Oracle Eğitimi'ne bakın . Ve birçok örnek ve açıklama için Stack Overflow'da arama yapın. Spesifikasyon JSR 310'dur .
Java.time nesnelerini doğrudan veritabanınız ile değiş tokuş edebilirsiniz . JDBC 4.2 veya üstü ile uyumlu bir JDBC sürücüsü kullanın . Dizelere gerek yok, derslere gerek yok .java.sql.*
Java.time sınıflarını nereden edinebilirim?
ThreeTen-Ekstra proje ek sınıfları ile java.time uzanır. Bu proje, java.time'a gelecekteki olası eklemeler için kanıtlayıcı bir zemindir. Burada bazı yararlı sınıfları gibi bulabilir Interval
, YearWeek
, YearQuarter
, ve daha .
Daha hızlı :
String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis( ));
YYYY-AA-gg olarak zaman için
String time = new DateTime( yourData ).toString("yyyy-MM-dd");
Ve DateTime Kitaplığı:
import org.joda.time.DateTime;
DateTime
geliyor? Yığın Taşması ile ilgili bir Cevap, bu sitenin bir pasaj kitaplığından daha fazlası olması gerektiği için bazı açıklamalar içermelidir.
Cevapların çoğu geçerli. Tarih işleme için yeni JAVA API değişikliği, java tarih işlemede daha önceki bazı belirsizliklerin azaltılmasını sağladı.
Benzer aramalar için kullanımdan kaldırılmış bir mesaj alacaksınız.
new Date() // deprecated
Yukarıdaki çağrı, geliştiricinin yeni bir Date nesnesinin Date nesnesine geçerli zaman damgasını vereceğini varsaymasını sağladı. Bu davranış, diğer Java API sınıflarında tutarlı değildir.
Bunu yapmanın yeni yolu Takvim Örneğini kullanmaktır.
new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()
Burada da adlandırma kuralı mükemmel değil ama bu oldukça organize. Benim gibi bir şeyleri gasp etmekte zorlanan ama mantıklı göründüğünde / göründüğünde bir şeyi asla unutmayacak biri için bu iyi bir yaklaşım.
Bu gerçek hayatla daha eş anlamlıdır
Bunu yapmanın bir başka yolu da Joda zaman API'sini kullanmaktır
new DateTime().toString("yyyy-MM-dd")
ya da çok bariz
new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd")
her ikisi de aynı sonucu döndürecektir.
java.util.Date
, java.util.Calendar
ve java.text.SimpleTextFormat
şimdi mirası supplanted, java.time sınıfları. Ayrıca, Joda-Time projesi şu anda bakım modunda ve ekip java.time'a geçişi tavsiye ediyor.
Clock
Java 8'deki uygulama eski sınıflarla tamamen aynıdır. Yalnızca Java 9'da, mevcut anı nanosaniye kadar ince bir çözünürlükle yakalayabilen yeni bir uygulama gelir.
public static Date getDateByString(String dateTime) {
if(dateTime==null || dateTime.isEmpty()) {
return null;
}
else{
String modified = dateTime + ".000+0000";
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
Date dateObj = new Date();
Date dateObj1 = new Date();
try {
if (dateTime != null) {
dateObj = formatter.parse(modified);
}
} catch (ParseException e) {
e.printStackTrace();
}
return dateObj;
}
}
String
biçimde işlevinize aktaramazsınız.