我通过转换日期值(以毫秒为单位)将我的值存储在数据库中,因此通过使用desc查询顺序获取最新日期。订单将按要求生效,但如果我输入日期02/01/2016和2016年1月30日两者都存储相同的毫秒值。
String date = "02/01/2016";
String month = date.substring(0, 2);
String day = date.substring(3, 5);
String year = date.substring(6, 10);
Calendar c1 = Calendar.getInstance();
c1.set(Integer.parseInt(year), Integer.parseInt(month), Integer.parseInt(day));
long left = c1.getTimeInMillis();
调试后,我得到了以下毫秒值 2016年2月1日---- 61414914600000 和2016年1月30日---- 61414914600000
有人知道为什么会这样吗?
答案 0 :(得分:0)
使用SimpleDateFormat值我得到不同的毫秒值:
Date date;
String dtStart = "02/01/2016";
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
try {
date = format.parse(dtStart);
long timeMills=date.getTime();
System.out.println("Date ->" + date);
} catch (Exception e) {
e.printStackTrace();
}
答案 1 :(得分:0)
我运行了您的初始代码,它几乎按预期运行。几点:
Date
对象获得了这个号码,而不是来自Calendar
:http://docs.oracle.com/javase/6/docs/api/java/util/Date.html#Date(int, int, int) 正如Mat所说,Calendar
的月份为零,而你调用setter的行应减去1:
c1.set(Integer.parseInt(year), Integer.parseInt(month) - 1, Integer.parseInt(day));
您使用另一段代码回答了自己的问题,但不推荐使用Date
,而应使用Calendar
。您在初始帖子中的原始代码基本上是正确的(除了从零开始的月份)。您应确保知道输出的来源和/或在运行之前不忘记构建代码。