gpt4 book ai didi

android - 获取一天开始的时间戳

转载 作者:IT老高 更新时间:2023-10-28 23:27:40 28 4
gpt4 key购买 nike

我使用 unix 时间戳将时间/日期存储在数据库中。然后我想在某一天获取所有实例,因此我需要计算一天开始的时间戳以查询数据库。

我在 php 中做了类似的事情,方法是将日期对象中的日/月/年的值传递给 mktime,并将小时和分钟设置为零。在 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;
}

但是当我刚才运行这个时,我得到了:

2012 年 12 月 15 日星期六 01:24:00 GMT

秒是对的,但小时和分钟是错的??

最佳答案

在处理时间时,您应该始终考虑时区。您的数据库时间戳应始终存储在一个时区(例如 UTC)中。然后,您的计算应该考虑用户可以在不同的时区,并且他们可以更改时区。

如果您想在用户当前在其手机中设置的时区计算一天的开始时间。创建 Calendar 实例:

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);

关于android - 获取一天开始的时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13892163/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com