我有一个来自 sqllite 数据库的格式化日期,要在图形视图中使用它,我需要将其格式化为一长串数字。
格式为:
2012-07-11 10:55:21
如何将其转换为毫秒?
您可以使用以下代码将字符串转换为 Date 对象:-
Date d = DateFormat.parse(String s)
然后使用内置方法将其转换为毫秒
long millisec = d.getTime();
使用
date.getTime()
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd, HH:mm:ss");
formatter.setLenient(false);
String oldTime = "2012-07-11 10:55:21";
Date oldDate = formatter.parse(oldTime);
long oldMillis = oldDate.getTime();
试试这个:
import java.util.*;
public class ConvertDateIntoMilliSecondsExample{
public static void main(String args[]){
//create a Date object
Date date = new Date();
System.out.println("Date is : " + date);
//use getTime() method to retrieve milliseconds
System.out.println("Milliseconds since January 1, 1970, 00:00:00 GMT : "
+ date.getTime());
}
}
java.time
2014 年 3 月,Java 8 引入了现代的
java.time
日期时间 API,取代了容易出错的旧版java.util
日期时间 API。新代码应使用 java.time
API*。
LocalDateTime
并将结果转换为 Instant
,从中可以获得纪元毫秒数。
演示:
public class Main {
public static void main(String[] args) {
long millis = LocalDateTime
.parse(
"2012-07-11 10:55:21",
DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss"))
.atZone(ZoneId.systemDefault())
.toInstant()
.toEpochMilli();
System.out.println(millis);
// Alternatively, convert your date-time string into ISO 8601 format, which is
// also the default format of LocalDateTime.parse; therefore, you don't require
// a DateTimeFormatter explicitly
long epochMillis = LocalDateTime
.parse("2012-07-11 10:55:21".replace(" ", "T"))
.atZone(ZoneId.systemDefault())
.toInstant()
.toEpochMilli();
System.out.println(epochMillis);
}
}
输出:
1342004121000
1342004121000
注意: 无论出于何种原因,如果您需要
java.util.Date
对象的 OffsetDateTime
实例,您可以按如下方式操作:
java.util.Date date = Date.from(odt.toInstant());
从 Trail:日期时间了解有关现代日期时间 API 的更多信息。
* 如果您收到
java.util.Date
的实例,请使用 java.time.Instant
将其转换为
Date#toInstant
,并根据您的要求从中派生 java.time
的其他日期时间类。