我需要编写一个接受a java.util.Date并从中删除小时,分钟和毫秒的函数使用JUST MATH(没有Date格式化程序,没有Calendar对象等):
private Date getJustDateFrom(Date d) {
//remove hours, minutes, and seconds, then return the date
}
Run Code Online (Sandbox Code Playgroud)
此方法的目的是从毫秒值获取日期,没有时间.
这是我到目前为止所拥有的:
private Date getJustDateFrom(Date d) {
long milliseconds = d.getTime();
return new Date(milliseconds - (milliseconds%(1000*60*60)));
}
Run Code Online (Sandbox Code Playgroud)
问题是,这只会删除分钟和秒.我不知道如何删除时间.
如果我这样做milliseconds - (milliseconds%(1000*60*60*23)),那么它会回到前一天的23:00.
编辑:
这是另一种解决方案:
public static Date getJustDateFrom(Date d) {
Calendar c = Calendar.getInstance();
c.setTime(d);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
return c.getTime();
}
Run Code Online (Sandbox Code Playgroud)
此解决方案是否会受到我的应用程序的客户端/服务器端之间的时区差异的影响?
我想用loId=6 AND (actionType = "SAVE_DATA" OR 抓取所有文件actionType = "OPEN_SCREEN").
我写错了这个逻辑吗?
为什么我的查询返回0结果?
注意:我接受查询或过滤器来解决此问题.
这些是一些示例文档:
{
"_index": "logs",
"_type": "record",
"_id": "eIIt3vtrSxmdOVGClQmN3w",
"_score": 1,
"_source": {
"timestamp": 1373569919000,
"uid": 6,
"paId": 56298,
"loId": 6,
"prId": 2,
"vId": 6577,
"actionType": "SAVE_DATA"
}
},
{
"_index": "logs",
"_type": "record",
"_id": "yQGCia6qRYCImZLyH7DrEA",
"_score": 1,
"_source": {
"timestamp": 1373570314000,
"uid": 6,
"paId": 56641,
"loId": 6,
"prId": 2,
"vId": 6578,
"actionType": "CHECK_IN"
}
},
{
"_index": "logs",
"_type": "record",
"_id": "2raajrNKTKeRKG88wiNPpw",
"_score": 1, …Run Code Online (Sandbox Code Playgroud)