如何将字符串日期转换为长毫秒
Posted
技术标签:
【中文标题】如何将字符串日期转换为长毫秒【英文标题】:How to convert a string Date to long millseconds 【发布时间】:2012-09-10 12:18:33 【问题描述】:我在字符串中有一个日期,例如“2012 年 12 月 12 日”。 如何将其转换为毫秒(长)?
【问题讨论】:
【参考方案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 年发布的答案还使用当时早已过时的课程 SimpleDateFormat
和 Date
对我来说有点神秘。 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
并返回Date
和getTime
类的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();
【讨论】:
以上是关于如何将字符串日期转换为长毫秒的主要内容,如果未能解决你的问题,请参考以下文章