Java 根据年号和第几周得到开始时间和结束时间

摘要: 通常在做与时间相关的查询时,一个通用的做法是放入两个日历控件,一个是开始时间,一个是结束时间,用户在选择时间之后,校验时间合法性之后,就可以查询了,但在做小日本项目时遇到一个很奇葩的查询,这些用户不用开始时间结束时间,而是用这一年的第几周来查询出报表,个人觉得很不习惯,但还得做

通常在做与时间相关的查询时,一个通用的做法是放入两个日历控件,一个是开始时间,一个是结束时间,用户在选择时间之后,校验时间合法性之后,就可以查询了,但在做小日本项目时遇到一个很奇葩的查询,这些用户不用开始时间结束时间,而是用这一年的第几周来查询出报表,个人觉得很不习惯,但还得做。

后台保留的时间格式是datetime类型的,而前台给出的条件是 年号 和第几周,比如 2014 年 第 5 周. 这个时候,你需要在后台用 Java 将 它转换成具体的开始时间,结束时间,然后再去数据库查询。转换的具体方法,分享如下 :

package com.training.controller;

import java.util.Calendar;

public class ConvertDateTest {
	
	public static void main(String[] args) {
		
		ConvertDateTest cd = new ConvertDateTest();
		System.out.println("开始时间: " + cd.getStartDayOfWeekNo(2014,5) );
		System.out.println("结束时间:" + cd.getEndDayOfWeekNo(2014,5) );	
		
	}
	
	/**
	 * get first date of given month and year
	 * @param year
	 * @param month
	 * @return
	 */
	public String getFirstDayOfMonth(int year,int month){
	    String monthStr = month < 10 ? "0" + month : String.valueOf(month);
	    return year + "-"+monthStr+"-" +"01";
	}
	
	/**
	 * get the last date of given month and year
	 * @param year
	 * @param month
	 * @return
	 */
	public String getLastDayOfMonth(int year,int month){
	    Calendar calendar = Calendar.getInstance();
	    calendar.set(Calendar.YEAR , year);
	    calendar.set(Calendar.MONTH , month - 1);
	    calendar.set(Calendar.DATE , 1);
	    calendar.add(Calendar.MONTH, 1);
	    calendar.add(Calendar.DAY_OF_YEAR , -1);
	    return calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH) + 1) + "-" +
	           calendar.get(Calendar.DAY_OF_MONTH);
	}
	
	/**
	 * get Calendar of given year
	 * @param year
	 * @return
	 */
	private Calendar getCalendarFormYear(int year){
	    Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);      
        cal.set(Calendar.YEAR, year);
        return cal;
	}
	
	/**
	 * get start date of given week no of a year
	 * @param year
	 * @param weekNo
	 * @return
	 */
	public String getStartDayOfWeekNo(int year,int weekNo){
	    Calendar cal = getCalendarFormYear(year);
	    cal.set(Calendar.WEEK_OF_YEAR, weekNo);
	    return cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +
	           cal.get(Calendar.DAY_OF_MONTH);    
	    
	}
	
	/**
	 * get the end day of given week no of a year.
	 * @param year
	 * @param weekNo
	 * @return
	 */
	public String getEndDayOfWeekNo(int year,int weekNo){
	    Calendar cal = getCalendarFormYear(year);
        cal.set(Calendar.WEEK_OF_YEAR, weekNo);
        cal.add(Calendar.DAY_OF_WEEK, 6);
        return cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +
               cal.get(Calendar.DAY_OF_MONTH);    
	}

}



运行得到 2014 年第 5 周的开始时间和结束时间:
开始时间: 2014-1-27
结束时间:2014-2-2

上一篇: 分享一个定制 ibm case manager widget 的ppt 文档
下一篇: 利用 djanog 模板 生成 excel(xls) 文件
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号