
正文
java代码中日期查询 java的日期函数
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
如何在Java中对MongoDB按日期进行查询统计
方法一:通过构造BasicDBObject对象来进行查询
[java] view plain copy
int startYear=2015,endYear=2016;
int startMonth=12,endMonth=1;
int startDay=1,endDay=1;
BasicDBObject query= new BasicDBObject("applydate", new BasicDBObject("$gte", new Date(startYear - 1900, startMonth - 1, startDay)).append("$lt", new Date(endYear - 1900, endMonth -1, endDay)));//因为无法确知当前月有多少天,所以就从当月的1号(包含)计到下月1号(不包含)
int iCount = cltApplies.find(query).count();
System.out.println(iCount);
经测试上述代码执行完毕后iCount为9。也就是在2016-1-1至2016-1-31期间有9条记录。
方法二:通过BasicDBObjectBuilder对象来查询:
[java] view plain copy
int startYear=2016,endYear=2016;
int startMonth=1,endMonth=2;
int startDay=1,endDay=1;
BasicDBObject query= new BasicDBObject();
query.put("applydate", BasicDBObjectBuilder.start("$gte", new Date(startYear - 1900, startMonth - 1, startDay)).add("$lt", new Date(endYear - 1900, endMonth - 1, endDay)).get());
int iCount = cltApplies.find(query).count();
System.out.println(iCount);
上述代码执行后iCount同样为9。
注意:因为java.util.Date(year,month,day)这个构造函数中year是超出1900的年数,所以需要减去1900;month从0开始,所以需要减去1。这个问题容易被初学者忽视。
下面扩展地说一下如果要进行带日期过滤条件的统计,该如何做。
前面的东西都相同,只是在统计的时候需要调用集合的distinct方法。如统计某个字段不重复的值有哪些,可用如下写法:
[java] view plain copy
int startYear=2016,endYear=2016;
int startMonth=1,endMonth=2;
int startDay=1,endDay=1;
BasicDBObject query= new BasicDBObject();
query.put("applydate", BasicDBObjectBuilder.start("$gte", new Date(startYear - 1900, startMonth - 1, startDay)).add("$lt", new Date(endYear - 1900, endMonth - 1, endDay)).get());
ListString lstUserIds = cltApplies.distinct("userId", query);
System.out.println(lstUserIds.size());
上面这段代码的执行结果为4。也就是在2016-1-1至2016-1-31之间出现了4个不同的userId。
相关问答
Q1: 求Java代码 找到将来的日期
对于对着课本自学的新手而言,此时还没有接触到数组,所以,我给出利用switch嵌套的代码如下,结果是一样的,
package demo2_2;
import java.util.Scanner;
public class YuCe_2 {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("输入数字: ");
int iTodays = sc.nextInt();
System.out.println("输入另一个数字: ");
int iElap = sc.nextInt();
int iNextDay = (iElap + iTodays) % 7;
switch (iNextDay) {
case 0:
switch(iTodays) {
case 0: System.out.println("今天周日" + iElap + " 天后周日");break;
case 1: System.out.println("今天周一" + iElap + " 天后周日");break;
case 2: System.out.println("今天周二" + iElap + " 天后周日");break;
case 3: System.out.println("今天周三" + iElap + " 天后周日");break;
case 4: System.out.println("今天周四" + iElap + " 天后周日");break;
case 5: System.out.println("今天周五" + iElap + " 天后周日");break;
case 6: System.out.println("今天周六" + iElap + " 天后周日");break;
}
break;
case 1:
switch(iTodays) {
case 0: System.out.println("今天周日" + iElap + " 天后周一");break;
case 1: System.out.println("今天周一" + iElap + " 天后周一");break;
case 2: System.out.println("今天周二" + iElap + " 天后周一");break;
case 3: System.out.println("今天周三" + iElap + " 天后周一");break;
case 4: System.out.println("今天周四" + iElap + " 天后周一");break;
case 5: System.out.println("今天周五" + iElap + " 天后周一");break;
case 6: System.out.println("今天周六" + iElap + " 天后周一");break;
}
break;
case 2:
switch(iTodays) {
case 0: System.out.println("今天周日" + iElap + " 天后周二");break;
case 1: System.out.println("今天周一" + iElap + " 天后周二");break;
case 2: System.out.println("今天周二" + iElap + " 天后周二");break;
case 3: System.out.println("今天周三" + iElap + " 天后周二");break;
case 4: System.out.println("今天周四" + iElap + " 天后周二");break;
case 5: System.out.println("今天周五" + iElap + " 天后周二");break;
case 6: System.out.println("今天周六" + iElap + " 天后周二");break;
}
break;
case 3:
switch(iTodays) {
case 0: System.out.println("今天周日" + iElap + " 天后周三");break;
case 1: System.out.println("今天周一" + iElap + " 天后周三");break;
case 2: System.out.println("今天周二" + iElap + " 天后周三");break;
case 3: System.out.println("今天周三" + iElap + " 天后周三");break;
case 4: System.out.println("今天周四" + iElap + " 天后周三");break;
case 5: System.out.println("今天周五" + iElap + " 天后周三");break;
case 6: System.out.println("今天周六" + iElap + " 天后周三");break;
}
break;
case 4:
switch(iTodays) {
case 0: System.out.println("今天周日" + iElap + " 天后周四");break;
case 1: System.out.println("今天周一" + iElap + " 天后周四");break;
case 2: System.out.println("今天周二" + iElap + " 天后周四");break;
case 3: System.out.println("今天周三" + iElap + " 天后周四");break;
case 4: System.out.println("今天周四" + iElap + " 天后周四");break;
case 5: System.out.println("今天周五" + iElap + " 天后周四");break;
case 6: System.out.println("今天周六" + iElap + " 天后周四");break;
}
break;
case 5:
switch(iTodays) {
case 0: System.out.println("今天周日" + iElap + " 天后周五");break;
case 1: System.out.println("今天周一" + iElap + " 天后周五");break;
case 2: System.out.println("今天周二" + iElap + " 天后周五");break;
case 3: System.out.println("今天周三" + iElap + " 天后周五");break;
case 4: System.out.println("今天周四" + iElap + " 天后周五");break;
case 5: System.out.println("今天周五" + iElap + " 天后周五");break;
case 6: System.out.println("今天周六" + iElap + " 天后周五");break;
}
break;
case 6:
switch(iTodays) {
case 0: System.out.println("今天周日" + iElap + " 天后周六");break;
case 1: System.out.println("今天周一" + iElap + " 天后周六");break;
case 2: System.out.println("今天周二" + iElap + " 天后周六");break;
case 3: System.out.println("今天周三" + iElap + " 天后周六");break;
case 4: System.out.println("今天周四" + iElap + " 天后周六");break;
case 5: System.out.println("今天周五" + iElap + " 天后周六");break;
case 6: System.out.println("今天周六" + iElap + " 天后周六");break;
}
break;
}
}
}
Q2: java查询某一天是一年中的第几天
java中Calendar类中给出java代码中日期查询了求第几天第几周java代码中日期查询的方法的java代码中日期查询,所以直接引用即可。
Calendar ca = Calendar.getInstance();//创建一个日期实例
ca.setTime(new Date());//实例化一个日期
System.out.println(ca.get(Calendar.DAY_OF_YEAR));//获取是第多少天
System.out.println(ca.get(Calendar.WEEK_OF_YEAR));//获取是第几周
备注:此方法提供了很多方法java代码中日期查询,如查月java代码中日期查询,日、周等等。
Q3: 高分求Java编写的万年历源代码,能够显示当前系统时间和日期查询。
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class TestDate {
public static final String[] weeks = { "日", "一", "二", "三", "四", "五", "六" };
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR,2011);//2011年
c.set(Calendar.MONTH,0);//java中Calendar类,月从0开始, 0代表一月
c.set(Calendar.DATE,1);//1号
int day = c.get(Calendar.DAY_OF_WEEK);//获致是本周的第几天地, 1代表星期天...7代表星期六
System.out.println(new SimpleDateFormat( "yyyy-MM-dd ").format(c.getTime()));
System.out.println("星期" + weeks[day-1]);
}
}
Q4: 做个日期查询,判断开始日期与终止日期范围必须在一个月之内,用java代码
import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.logging.SimpleFormatter;
public class DateTest {
/**
* 判断是否在同一个月
* @param startDate yyyy-MM-dd
* @param endDate yyyy-MM-dd
* @return false:不在同一个月内java代码中日期查询,true在同一个月内
*/
public static boolean isMonth(String startDate,String endDate){
if(margin(startDate, endDate)31){
return false;
}
int startMonth = Integer.parseInt(startDate.substring(5, 7));
int endMonth = Integer.parseInt(endDate.substring(5, 7));
if(startMonth==endMonth){
return true;
}else{
return false;
}
}
/**
* 计算开始日期和结束日期差
* @param startDate yyyy-MM-dd
* @param endDate yyyy-MM-dd
* @return
*/
private static int margin(String startDate,String endDate){
ParsePosition pos = new ParsePosition(0);
ParsePosition pos2 = new ParsePosition(0);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date ds = sdf.parse(startDate, pos);
Date de = sdf.parse(endDate, pos2);
long l = de.getTime()-ds.getTime();
int margin = (int)(l/24*60*60*1000);
return margin;
}
/**
* main方法测试
* @param args
*/
public static void main(String[] args) {
System.out.println(DateTest.isMonth("2014-10-17", "2014-10-25"));
System.out.println(DateTest.isMonth("2014-10-17", "2014-12-25"));
}
}
Q5: javaWeb中,根据用户输入一个日期,查询一周日期(上周日,到本周六)。
使用Calender类很容易啊。。。。给你代码:
input.jsp:
%@page contentType="text/html" pageEncoding="UTF-8"%
!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
""
html
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
titleJSP Page/title
/head
body
form action="showDate" method="post"
请输入日期 input type="text" name="year" value="" size="4" /-
input type="text" name="month" value="" size="2" /-
input type="text" name="date" value="" size="2" /
input type="submit" value="确定" /
/form
/body
/html
servlet(showDate.java):
package cliff;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Calendar;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class showDate extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String year, month, date;
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
year = request.getParameter("year");
month = request.getParameter("month");
date = request.getParameter("date");
//根据得到的请求参数,构建一个Calendar
Calendar c = Calendar.getInstance();
// 注意月份的起始值为0而不是1,所以要设置八月时,我们用7而不是8
c.set(Integer.parseInt(year), Integer.parseInt(month) - 1, Integer.parseInt(date));
//得到输入的日期是一周的第几天
int dow = c.get(Calendar.DAY_OF_WEEK);
//得到一周的第一天,也就是星期天的日期
c.add(Calendar.DATE, dow - 7);
out.println("得到的一周日期为");
for (int i = 0; i 7; i++) {
out.print(c.get(Calendar.DATE) + " ");
//继续使用Calendar的目的是为了防止跨月份的情况出现
c.add(Calendar.DATE, 1);
}
} finally {
out.close();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "cliff's showDate servlet";
}// /editor-fold
}
功能达到,收工!
另:为了简便,这里面没有对错误输入进行处理。应该判断输入的是不是合法的年月日。。。。
关于java代码中日期查询和java的日期函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






