关于Date类中getTime()方法的疑问。

返回自从GMT 1970-01-01 00:00:00到此date对象上时间的毫秒数。那date对象是1970年之前呢,比如1921年也是返回的距1970-01-01的毫秒数吗

getTime方法是不带参数的,所以取不到,如果你要计算1921年的 你得换一个方法

 

负数

这就是我疑问的地方,下面是我网上找的一种解法,不太理解两个Date对象(一个在70年前,一个在70年后)getTime方法做差值

题目:请问从 1921 年 7 月 23 日中午 12 时到 2020 年 7 月 1 日中午 12 时一共包含多少分钟?
import java.util.Date;
public class Main {
    public static void main(String[] args) {
        Date d1 = new Date(2020, 7, 1, 12,0);
        Date d2 = new Date(1921, 7, 23, 12,0);
        long ans = d1.getTime() - d2.getTime();
        System.out.println(ans/60000);
    }
}

这个代码哪里有问题吗?相减就是1921到2020年的毫秒数

Date d1 = new Date(2020, 7, 1, 12,0);

Date d2 = new Date(1921, 7, 23, 12,0);

这两个构造器不是返回1970年以后的毫秒数。。。看看源码再得结论!!!

 

 

 

public static final String STANDARD_FORMAT = "yyyy-MM-dd HH:mm:ss";

 public static Date strToDate(String dateTimeStr){
        DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(STANDARD_FORMAT);
        DateTime dateTime = dateTimeFormatter.parseDateTime(dateTimeStr);
        return dateTime.toDate();
    }

Date date = strToDate("1960-05-30 10:11:02");
System.out.println("1960-05-30 10:11:02 结果为: " + date.getTime());
System.out.println(strToDate("1960-05-30 10:11:02").getTime() + 5* 60 * 1000 + "");

结果: 1960-05-30 10:11:02 结果为: -302651338000
-302651038000

是负数 ,问题是mysql好像不接受负值的时间戳,楼主你是想保存时间戳到数据库吗?

转成datetime啊

select DATE_ADD(FROM_UNIXTIME(0), INTERVAL -302651038000 SECOND)

bigint不知道行不行, 你可以试试