如何将字符串日期转换为长毫秒


Answers:


154

使用SimpleDateFormat

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

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

11

现在该有人为这个问题提供现代答案了。在2012年提出问题时,当时发布的答案也是不错的答案。为什么答案公布在2016年也使用然后早已过时的类SimpleDateFormatDate是多了一份神秘的一点给我。java.time,现代Java日期和时间API(也称为JSR-310)使用起来非常好。您可以通过ThreeTenABP在Android上使用它,请参见以下问题:如何在Android Project中使用ThreeTenABP

对于大多数目的,我建议使用UTC一天开始时的毫秒数。要获得这些:

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

打印:

1355270400000

如果您需要某个特定时区的开始时间,请指定该时区而不是UTC,例如:

            .atStartOfDay(ZoneId.of("Asia/Karachi"))

如预期的那样,结果略有不同:

1355252400000

还有一点要注意,请记住为您提供一个语言环境DateTimeFormatter。我以12月为英语,该月也有其他语言,所以请自己选择正确的语言环境。如果您不提供语言环境,那么格式化程序将使用JVM的语言环境设置,该设置在许多情况下都可以使用,然后有一天,当您在使用其他语言环境设置的设备上运行应用程序时,意外地失败了。


9

看一下SimpleDateFormat可以解析aString并返回a的类以及该类DategetTime方法Date



3

您可以使用simpleDateFormat解析字符串日期。


1

使用Date()和getTime()的最简单方法

    Date dte=new Date();
    long milliSeconds = dte.getTime();
    String strLong = Long.toString(milliSeconds);
    System.out.println(milliSeconds)

1

使用simpledateformat可以轻松实现它。

1)首先使用simpledateformatter将字符串转换为java.Date。

2)使用getTime方法从日期获取毫秒数

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

更多示例请点击这里


0

试试下面的代码

        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();
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.