Bir dize tarihini uzun milisaniyeye dönüştürme


Yanıtlar:


154

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

17
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();

11

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 SimpleDateFormatve Datebenim için biraz daha muamma. java.timeJSR-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.


9

Bir göz atın SimpleDateFormatbir ayrıştırma Sınıfa Stringve dönmek Dateve getTimeyöntemi Datesınıfına.



3

dize tarihini ayrıştırmak için simpleDateFormat'ı kullanabilirsiniz.


1

En 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)

1

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


0

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();
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.