我正在使用unix时间戳存储数据库中的时间/日期.
我想要在某一天获取所有的实例,因此我需要计算一天中的时间戳来查询数据库.
我想要在某一天获取所有的实例,因此我需要计算一天中的时间戳来查询数据库.
我通过将日期/时间的日期/年份的值从日期对象传递给mktime,并将时间和分钟设置为零,从而在PHP中做了类似的事情.在java / android中似乎没有类似的功能(用于获取特定部分日期的函数已被弃用)
任何人都可以给出一些指导吗?谢谢
编辑:
好吧,我意识到这可能会起作用:
public static int startOfDay(Timestamp time) { Calendar cal = dateToCalendar(new Date(time.getTime())); cal.add(Calendar.HOUR_OF_DAY,-Calendar.HOUR_OF_DAY); cal.add(Calendar.MINUTE,-Calendar.MINUTE); cal.add(Calendar.SECOND,-Calendar.SECOND); Log.i("Time",cal.getTime().toString()); return (int) cal.getTimeInMillis()/1000; }
但是当我跑了这个时候我得到:
星期六12月15日01:24:00 GMT 2012
秒是正确的,但时间和分钟是错误的?
解决方法
处理时间时,您应该始终考虑时区.您的数据库时间戳应始终存储在一个时区(例如UTC)中.您的计算应该考虑用户可以在不同的时区,并且他们可以更改时区.
如果要计算用户当前在其手机中设置的时区的开始日期.创建日历实例:
Calendar cal = Calendar.getInstance();
要获取特定时区的实例,请执行以下操作:
// use UTC time zone Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
然后设置一天的开始:
cal.setTime(time); // compute start of the day for the timestamp cal.set(Calendar.HOUR_OF_DAY,0); cal.set(Calendar.MINUTE,0); cal.set(Calendar.SECOND,0); cal.set(Calendar.MILLISECOND,0);