事情背景交待:在电商中,活动是经常存在的,今天就来说一下活动的倒计时,一般分为几种,是活动结束还剩下多久,还有多久可以开始活动,有同学说,这还不好算,不就是用时间差进行比较,转化一下时间时间么?确实,如果是单纯的都在某一个地方,搞这活动,可能是这个样子,但是,如果说要面对是好几个国家呢?这个事儿,就有搞头了。首先,要计算倒计时,还得从首先来一个统一的维度,你中国人,有中国的时区,美国人,有美国的时区,什么?这么多,一整就乱。
一般的话,做这样的业务,首选的就是统一时间,管你哪的人,我们将时间维度统一到一个上面,那就是UTC时间,同时服务器将相关活动开时间,与结束时间,都统一的传输过来。在这个过程中,有几个东西需要明确一下
1)时间戳在任何的设备上取的,是一样的,他不会受你所在的时区问题而受影响 。此是一坑,可能有好多的同学会觉得,不同的时区,其值也是不一样的。
2)对时间进行format的时候,需要设定,其时间所在的时区,不然,fromat的结果时间戳可能就不对了。如,服务器传送给你的时间是:
2016-08-12 16:00:00, 在对其转化到Date的时候要设置这个时间,其实所在的时区。
SimpleFormat format=new SimpleFormat("yyyy-MM-dd HH:mm:ss");
format.setTimeZone(['你所对应的时区']);
3)在进行过程中,出现过时间差,总差上一个12小时,检测了好久,才发现,是这个东西在做鬼。就是12进制时间,与24进制时间的关系问题。记住:
yyyy-mm-dd HH:mm:ss 与 yyyy-mm-dd hh:mm:ss 的区别。
4)最后献上一个时间转化工具类