Bir dizenin içinde "12-Aralık-2012" gibi bir tarih var. Bunu milisaniyeye (uzun) nasıl dönüştürebilirim?
Bir dizenin içinde "12-Aralık-2012" gibi bir tarih var. Bunu milisaniyeye (uzun) nasıl dönüştürebilirim?
Yanıtlar:
SimpleDateFormat Kullanımı
String string_date = "12-December-2012";
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
try {
Date d = f.parse(string_date);
long milliseconds = d.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
Birinin bu soruya modern bir yanıt vermesinin zamanı geldi. 2012'de soru sorulduğunda, o zamanlar yayınlanan cevaplar da iyi cevaplardı. Neden 2016'da yayınlanan cevaplar o zamanlar çoktan modası geçmiş sınıfları da kullanıyor SimpleDateFormat
ve Date
benim için biraz daha muamma. java.time
JSR-310 olarak da bilinen modern Java tarih ve saat API'si ile çalışmak çok daha hoş. ThreeTenABP aracılığıyla Android'de kullanabilirsiniz, şu soruya bakın : Android Project'te ThreeTenABP nasıl kullanılır .
Çoğu amaç için , UTC olarak günün başlangıcındaki dönemden bu yana geçen milisaniyeleri kullanmanızı tavsiye ederim . Bunları elde etmek için:
DateTimeFormatter dateFormatter
= DateTimeFormatter.ofPattern("d-MMMM-uuuu", Locale.ENGLISH);
String stringDate = "12-December-2012";
long millisecondsSinceEpoch = LocalDate.parse(stringDate, dateFormatter)
.atStartOfDay(ZoneOffset.UTC)
.toInstant()
.toEpochMilli();
System.out.println(millisecondsSinceEpoch);
Bu şunu yazdırır:
1355270400000
Belirli bir saat diliminde günün başlangıcında saate ihtiyaç duyuyorsanız, UTC yerine bu saat dilimini belirtin, örneğin:
.atStartOfDay(ZoneId.of("Asia/Karachi"))
Beklendiği gibi, bu biraz farklı bir sonuç verir:
1355252400000
Dikkat edilmesi gereken başka bir nokta, sizin için bir yerel ayar sağlamayı unutmayın DateTimeFormatter
. Aralık ayı İngilizce olarak kabul ettim, o ayın aynı adı verilen başka diller de var, bu yüzden lütfen uygun yerel ayarı kendiniz seçin. Bir yerel ayar sağlamadıysanız, biçimlendirici JVM'nin yerel ayar ayarını kullanır ve bu birçok durumda işe yarayabilir ve ardından uygulamanızı farklı bir yerel ayar ile bir cihazda çalıştırdığınızda bir gün beklenmedik bir şekilde başarısız olur.
java.util.Date
tarih biçimlendiriciye dönüştürEn kolay yol Date Using Date () ve getTime () kullanılır.
Date dte=new Date();
long milliSeconds = dte.getTime();
String strLong = Long.toString(milliSeconds);
System.out.println(milliSeconds)
simpledateformat kullanarak bunu kolayca başarabilirsiniz.
1) İlk olarak simpledateformatter kullanarak dizeyi java.Date'e dönüştürün.
2) tarihten milisaniye sayısını elde etmek için getTime yöntemini kullanın
public class test {
public static void main(String[] args) {
String currentDate = "01-March-2016";
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
Date parseDate = f.parse(currentDate);
long milliseconds = parseDate.getTime();
}
}
daha fazla Örnek buraya tıklayın
Aşağıdaki kodu deneyin
SimpleDateFormat f = new SimpleDateFormat("your_string_format", Locale.getDefault());
Date d = null;
try {
d = f.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
long timeInMillis = d.getTime();