发表于: 2017-12-01 23:01:04

1 810


今天完成的事
关于每天的验证码次数
Calendar calendar1 = Calendar.getInstance();
calendar1.set(2017, 12, 1, 23, 59, 59);
long a=calendar1.getTimeInMillis();
Calendar calendar2 = Calendar.getInstance();
calendar2.set(2017,12,2,0,0,0);
long b=calendar2.getTimeInMillis();
System.out.println((b+1000*3600*8)/1000/3600/24);
System.out.println((a+1000*3600*8)/1000/3600/24);
结果
17533
17532
这个事情说明什么呢?
日历和时间是两码事
一般我们说的计算机时间是绝对时间,全世界统一的
而日历是对绝对时间的一种描述,根据每个地方的而变化
Calendar calendar1 = Calendar.getInstance();
calendar1.set(2017, 12, 1, 23, 59, 59);
System.out.println(calendar1.getTimeInMillis());
System.out.println(formatter.format(calendar1.getTime()));
我们一般在数据库中保存的都是以毫秒为单位的绝对时间
计算机的毫秒时间戳是从每天的八点被整除的
系统会判定每天的8点到第二天的8天是一天
也就是说假如在一天的8点之前签到,被一天整除是处不尽的
造成这个的原因是什么呢
因为我一直以中国东八区的时间按为标准
其实我们的一天要比美国时间早8个小时
计算机毕竟是洋大人发明的东西,当然不会按照中国人的习惯来啦
再就是
Calendar calendar1 = Calendar.getInstance();
calendar1.set(2017, 12, 1, 23, 59, 59);
System.out.println(calendar1.getTimeInMillis());
System.out.println(formatter.format(1514822399036L));
结果
1514822399353
2018-01-01 23:59:59

明天计划的事
把框架搭好
收获
关于时间和日历的细节又有了更深一步的认识
总结就是
两个收获
  • 当我们把毫秒转化为天数的时候,因为我们比美国晚8小时到0点,因此我们需要在获取到的时间上加上8小时的毫秒,然后再除以每天的毫秒数,才能以当地时间的0点作为分界线划分天数
  • calendar的月份是以0为起始点的,加入你写12的话,最后获取的时间是明年1月的相同时间
遇到的问题



返回列表 返回列表
评论

    分享到