如何将日期格式化为毫秒?

8

我从sqllite数据库中拿到了一个格式化的日期,为了在图表视图中使用它,我需要将其格式化成一个长数字。

格式如下:

2012-07-11 10:55:21

我该如何将它转换成毫秒?


1
这个对你有帮助吗?https://dev59.com/VWsz5IYBdhLWcg3wrJ0x - Ivan
我需要将字符串格式化,但链接展示的是如何从日期类型值进行转换。 - Reyjohn
4个回答

7
您可以使用以下代码将字符串转换为Date对象: Date d = DateFormat.parse(String s) 然后,您可以使用内置方法将其转换为毫秒数: long millisec = d.getTime();

6

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

2
这会导致解析异常,而应使用以下格式:SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss"); - jai

0

java.time

使用java.time现代日期时间API*:的解决方案:

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        // Test
        System.out.println(toMillis("2012-07-11 10:55:21"));
    }

    public static long toMillis(String strDateTime) {
        // Replace the parameter, ZoneId.systemDefault() which returns JVM's default
        // timezone, as applicable e.g. to ZoneId.of("America/New_York")
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("u-M-d H:m:s", Locale.ENGLISH)
                                    .withZone(ZoneId.systemDefault());

        ZonedDateTime zdt = ZonedDateTime.parse(strDateTime, dtf);
        
        Instant instant = zdt.toInstant();
        
        return instant.toEpochMilli();
    }
}

输出:

1342000521000

日期时间教程了解更多关于现代日期时间 API*。


*如果因为任何原因你必须使用Java 6或Java 7,你可以使用ThreeTen-Backport,它将大部分java.time功能移植到Java 6和7。如果你正在开发一个Android项目,而且你的Android API级别仍不符合Java-8,请查看通过解糖可用的Java 8+API如何在Android项目中使用ThreeTenABP


0

试试这个:

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

    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接