做报表功能遇到的问题
数据库日期字段(sdate) ,录入时候使用new Date(); 赋值保留了 时 分 秒
查询时候通过日期查询 sdate = to_date('2015-01-30','yyyy-mm-dd') 没有查到数据
不想全表扫描 所以没有给sdate使用函数,所以查不到数据。
结果想在new Date()上做些手脚
long now = System.currentTimeMillis();
now = now/1000/60/60/24;
new Date(now * 1000*60*24); 把时分秒数据舍掉
format后结果:
2015-01-30 08:00:00
非常奇怪 为什么多了8小时?
然后自己试验了一下
long baseYears = new Date(format("1970-01-01 00:00:00")).getTime();
结果得到了 -28800000 转换下正好是 8小时
这个计算机元年 是跟时区有关吗? 我们是东八区所以日期 要加上8小时?
java的日期类型问题
答案:3 悬赏:70 手机版
解决时间 2021-01-28 18:29
- 提问者网友:聂風
- 2021-01-28 02:54
最佳答案
- 五星知识达人网友:旧脸谱
- 2021-01-28 04:01
long now = System.currentTimeMillis();
long t=now;
System.out.println(now);
now = now/1000/60/60/24;
now = now*1000*60*60*24;
System.out.println((t-now)/1000/60/60);
System.out.println(now);
//new Date(now*1000*60*60*24);
System.out.println(new Date());
System.out.println(new Date(now));
我也很感兴趣,对你的代码进行了计算,发现你中间去掉的时分秒正好是从8点到你统计时刻的时间.......
long t=now;
System.out.println(now);
now = now/1000/60/60/24;
now = now*1000*60*60*24;
System.out.println((t-now)/1000/60/60);
System.out.println(now);
//new Date(now*1000*60*60*24);
System.out.println(new Date());
System.out.println(new Date(now));
我也很感兴趣,对你的代码进行了计算,发现你中间去掉的时分秒正好是从8点到你统计时刻的时间.......
全部回答
- 1楼网友:山有枢
- 2021-01-28 05:08
输出时,是后面的00:00:00,你可以用字符串截取的方式显示,或者用java.util.*;包下的simpledateformate fo=new simpledateformate("yyyy-mm-dd");形式输出
- 2楼网友:十年萤火照君眠
- 2021-01-28 04:13
不错,计算的时候是带默认时区的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯