我正在使用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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。