【问题标题】:How to convert a string Date to long millseconds如何将字符串日期转换为长毫秒
【发布时间】:2012-09-10 12:18:33
【问题描述】:

我在字符串中有一个日期,例如“2012 年 12 月 12 日”。 如何将其转换为毫秒(长)?

【问题讨论】:

    标签: java android epoch milliseconds date-conversion


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:
      SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
      Date date = (Date)formatter.parse("12-December-2012");
      long mills = date.getTime();
      

      【讨论】:

        【解决方案3】:

        是时候有人为这个问题提供现代答案了。 2012年问这个问题的时候,当时贴出来的答案也是很好的答案。为什么 2016 年发布的答案还使用当时早已过时的课程 SimpleDateFormatDate 对我来说有点神秘。 java.time,现代 Java 日期和时间 API,也称为 JSR-310,使用起来更方便。您可以通过 ThreeTenABP 在 Android 上使用它,请参阅this question: How to use ThreeTenABP in Android Project

        对于大多数目的,我建议使用自一天开始时的纪元以来的毫秒数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 的语言环境设置,这可能在许多情况下都有效,然后有一天当您在具有不同语言环境设置的设备上运行您的应用程序时会意外失败。

        【讨论】:

          【解决方案4】:

          查看SimpleDateFormat 类,它可以解析String 并返回DategetTime 类的getTime 方法。

          【讨论】:

            【解决方案5】:
            • 首先使用日期formatter将字符串转换为java.util.Date
            • 使用getTime() 获取从日期开始的毫秒数

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                【解决方案7】:

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

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

                【讨论】:

                  【解决方案8】:

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

                  更多示例点击here

                  【讨论】:

                    【解决方案9】:

                    试试下面的代码

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

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 2012-07-29
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-08-11
                      • 1970-01-01
                      • 2012-09-12
                      • 2020-12-11
                      • 1970-01-01
                      相关资源
                      最近更新 更多