gpt4 book ai didi

Android将日期和时间转换为毫秒

转载 作者:IT老高 更新时间:2023-10-28 21:53:30 26 4
gpt4 key购买 nike

我有一种日期和时间格式如下:

Tue Apr 23 16:08:28 GMT+05:30 2013

我想转换成毫秒,但我实际上不知道它是哪种格式。谁能帮帮我。

最佳答案

Update for DateTimeFormatter introduced in API 26.

API 26 及以上的代码可以编写如下

// Below Imports are required for this code snippet
// import java.util.Locale;
// import java.time.LocalDateTime;
// import java.time.ZoneOffset;
// import java.time.format.DateTimeFormatter;
String date = "Tue Apr 23 16:08:28 GMT+05:30 2013";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH);
LocalDateTime localDate = LocalDateTime.parse(date, formatter);
long timeInMilliseconds = localDate.atOffset(ZoneOffset.UTC).toInstant().toEpochMilli();
Log.d(TAG, "Date in milli :: FOR API >= 26 >>> " + timeInMilliseconds);
// Output is -> Date in milli :: FOR API >= 26 >>> 1366733308000

但截至目前,只有 6% 的设备运行在 26 或更高版本上。因此,您将需要上述类的向后兼容性。 JakeWharton已写 ThreeTenABP这是基于 ThreeTenBP ,但专门为在 Android 上工作而开发。 阅读更多关于 How and Why ThreeTenABP should be used instead-of java.time, ThreeTen-Backport, or even Joda-Time 的信息

所以使用 ThreeTenABP,上面的代码可以写成(并在 API 16 到 API 29 上验证)

// Below Imports are required for this code snippet
// import java.util.Locale;
// import org.threeten.bp.OffsetDateTime;
// import org.threeten.bp.format.DateTimeFormatter;
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"EEE MMM dd HH:mm:ss OOOO yyyy", Locale.ROOT);
String givenDateString = "Tue Apr 23 16:08:28 GMT+05:30 2013";
long timeInMilliseconds = OffsetDateTime.parse(givenDateString, formatter)
.toInstant()
.toEpochMilli();
System.out.println("Date in milli :: USING ThreeTenABP >>> " + timeInMilliseconds);
// Output is -> Date in milli :: USING ThreeTenABP >>> 1366713508000

Ole 在他的回答中涵盖了汇总信息(也适用于 Java),您应该查看一下。


Below is old approach (and previous version of this answer) which should not be used now

使用下面的方法

String givenDateString = "Tue Apr 23 16:08:28 GMT+05:30 2013"; 
SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
try {
Date mDate = sdf.parse(givenDateString);
long timeInMilliseconds = mDate.getTime();
System.out.println("Date in milli :: " + timeInMilliseconds);
} catch (ParseException e) {
e.printStackTrace();
}

阅读更多关于 date and time pattern strings 的信息.

关于Android将日期和时间转换为毫秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19419374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com