Android:将日期转换为毫秒

时间:2012-03-12 16:36:39

标签: android date

我用过

SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
String time = formatter.format(new Date());

得到时间(12.03.2012,17:31),现在我想将此时间转换为毫秒,因为我有一个带有几个日期和文本的文件,我想以毫秒转换日期,以便我无法使用

在收件箱中添加文本
ContentValues values = new ContentValues();
values.put("address", "123");
values.put("body", "tekst");
values.put("read", 1);
values.put("date", HERE I MUST PUT A DATE IN MILLISECONDS);     
context.getContentResolver().insert(Uri.parse("content://sms/inbox"), values);

因为我必须花费时间以毫秒计算我必须转换时间,有人知道怎么做?

7 个答案:

答案 0 :(得分:24)

最简单的方法是将Date类型转换为毫秒:

SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy, HH:mm");
formatter.setLenient(false);

Date curDate = new Date();
long curMillis = curDate.getTime();
String curTime = formatter.format(curDate);

String oldTime = "05.01.2011, 12:45";
Date oldDate = formatter.parse(oldTime);
long oldMillis = oldDate.getTime();

答案 1 :(得分:3)

使用您的日期对象并致电date.getTime()

答案 2 :(得分:0)

如果您想要以毫秒为单位的当前时间,请使用System.currentTimeMillis()

答案 3 :(得分:0)

使用.getMillis();

例如:

DateTime dtDate = new DateTime();
dtDate.getMillis()

答案 4 :(得分:0)

String Date = "Tue Apr 25 18:06:45 GMT+05:30 2017"; 
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
try {
    Date mDate = sdf.parse(Date);
    long timeInMilliseconds = mDate.getTime();

} catch (ParseException e) {
            e.printStackTrace();
}

答案 5 :(得分:0)

使用此方法,您可以将日期转换为毫秒,以便将事件添加到日历中

public Long GettingMiliSeconds(String Date)
    {
        long timeInMilliseconds = 0;

        SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
        try {

            Date mDate = sdf.parse(Date);
            timeInMilliseconds = mDate.getTime();

        } catch (ParseException  e) {
            e.printStackTrace();
        }

        return  timeInMilliseconds;
    }

答案 6 :(得分:0)

java.time和废止或ThreeTenABP

我建议您使用现代Java日期和时间API java.time进行日期和时间工作。

    ZoneId zone = ZoneId.systemDefault();
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.uuuu, H:mm");
    
    String dateTimeString = "12.03.2012, 17:31";
    
    LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter);
    long milliseconds = dateTime.atZone(zone).toInstant().toEpochMilli();
    
    System.out.println(milliseconds);

当我在欧洲/苏黎世时区运行此命令时,输出为:

1331569860000

问题:java.time是否不需要Android API级别26?

java.time在较新和较旧的Android设备上均可正常运行。它只需要至少 Java 6

  • 在Java 8和更高版本以及更新的Android设备(API级别26以上)中,内置了现代API。
  • 在非Android Java 6和7中,获得ThreeTen Backport,这是现代类的backport(JSR 310的ThreeTen;请参见底部的链接)。
  • 在较旧的Android上,请使用废除旧书或Android版本的ThreeTen Backport。称为ThreeTenABP。在后一种情况下,请确保使用子包从org.threeten.bp导入日期和时间类。

链接