java得到某年某周的第一天实现思路及代码

直接上代码


代码如下:

import java.util.Calendar;
import java.util.Date;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* 日期工具类
* @author WXQ
*
*/
public class DateUtils {

private static final Log log = LogFactory.getLog(DateUtils.class);
/**
* 取得当前日期是多少周
*
* @param date
* @return
*/
public static int getWeekOfYear(Date date) {
Calendar c = Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.MONDAY);
/**设置一年中第一个星期所需的最少天数,例如,如果定义第一个星期包含一年第一个月的第一天,则使用值 1 调用此方法。
* 如果最少天数必须是一整个星期,则使用值 7 调用此方法。 **/
c.setMinimalDaysInFirstWeek(1);
c.setTime(date);
return c.get(Calendar.WEEK_OF_YEAR);
}
/**
* 得到某一年周的总数
*
* @param year
* @return
*/
public static int getMaxWeekNumOfYear(int year) {
Calendar c = Calendar.getInstance();
c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
return getWeekOfYear(c.getTime());
}
/**
* 得到某年某周的第一天
*
* @param year
* @param week
* @return
*/
public static Date getFirstDayOfWeek(int year, int week) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.WEEK_OF_YEAR, week);
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);//设置周一
c.setFirstDayOfWeek(Calendar.MONDAY);
return c.getTime();
}

/**
* 得到某年某周的最后一天
*
* @param year
* @param week
* @return
*/
public static Date getLastDayOfWeek(int year, int week) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.WEEK_OF_YEAR, week);
c.setFirstDayOfWeek(Calendar.MONDAY);
c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday

return c.getTime();
}

/**
* 得到某年某月的第一天
*
* @param year
* @param month
* @return
*/
public static Date getFirstDayOfMonth(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month-1);
c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));
return c.getTime();
}

/**
* 得到某年某月的最后一天
*
* @param year
* @param month
* @return
*/
public static Date getLastDayOfMonth(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month-1);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
return c.getTime();
}
/**
* 得到某年某季度第一天
*
* @param year
* @param quarter
* @return
*/
public static Date getFirstDayOfQuarter(int year, int quarter) {
int month = 0;
if (quarter > 4) {
return null;
} else {
month = (quarter - 1) * 3 + 1;
}
return getFirstDayOfMonth(year, month);
}
/**
* 得到某年某季度最后一天
*
* @param year
* @param quarter
* @return
*/
public static Date getLastDayOfQuarter(int year, int quarter) {
int month = 0;
if (quarter > 4) {
return null;
} else {
month = quarter * 3;
}
return getLastDayOfMonth(year, month);
}
/**
* 得到某年第一天
*
* @param year
* @return
*/
public static Date getFirstDayOfYear(int year) {
return getFirstDayOfQuarter(year,1);
}

/**
* 得到某年最后一天
*
* @param year
* @return
*/
public static Date getLastDayOfYear(int year) {
return getLastDayOfQuarter(year,4);
}

public static void main(String[] args) {
log.info(getFirstDayOfWeek(2013,1));
log.info(getLastDayOfWeek(2013,1));

log.info(getFirstDayOfMonth(2013,2));
log.info(getLastDayOfMonth(2013,2));

log.info(getFirstDayOfQuarter(2013,2));
log.info(getLastDayOfQuarter(2013,2));

log.info(getFirstDayOfYear(2013));
log.info(getLastDayOfYear(2013));

}
}

(0)

相关推荐

  • asp.Net 中获取一周第一天,一月第一天等实现代码

    复制代码 代码如下: DateTime dt = DateTime.Now; //本月第一天时间 DateTime dt_First = dt.AddDays(-(dt.Day) + 1); Label1.Text = dt_First.ToString("yyyy-MM-dd"); //将本月月数+1 DateTime dt2 = dt.AddMonths(1); //本月最后一天时间 DateTime dt_Last = dt2.AddDays(-(dt.Day)); Label2

  • asp.net 日期函数 某月的第一天和最后一天的日期

    #region 得到一个月的第一天和最后一天的日期 /// <summary> /// 得到本月的第一天日期 /// </summary> /// <returns>DateTime</returns> public static DateTime GetFirstDayOfMonth() { return GetFirstDayOfMonth(DateTime.Now); } /// <summary> /// 得到本月的最有一天的日期 ///

  • mssql中获取指定日期所在月份的第一天的代码

    获取指定日期月份的第一天,你可以使用DATEADD函数,减去指定日期的月份过去了的天数,即可. 复制代码 代码如下: CREATE FUNCTION [dbo].[udf_FirstDayOfMonth] ( @Date DATE ) RETURNS DATETIME AS BEGIN RETURN CAST(DATEADD(day,1 - DAY(@Date), @Date) AS DATETIME) END 或者,用DATEDIFF计算指定日期与日期开始之时,相隔几个月,然后再DATEADD

  • java得到某年某周的第一天实现思路及代码

    直接上代码 复制代码 代码如下: import java.util.Calendar; import java.util.Date; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * 日期工具类 * @author WXQ * */ public class DateUtils { private static final Log log = LogFactory.

  • Java编程实现计算两个日期的月份差实例代码

    本文实例主要实现计算两个日期的月份差,具体如下: package com.forezp.util; import org.joda.time.DateTime; import org.joda.time.Months; import org.joda.time.format.DateTimeFormat; import org.joda.time.format.DateTimeFormatter; /** * 在JAVA中,如何计算两个日期的月份差?<br> * * * @author Adm

  • Java 替换字符串右侧出现的第一个子串方式

    Java 替换字符串右侧出现的第一个子串方式 需求 编程实现一个方法,能把一个字符串src的右侧出现的第一个olds子串替换为news,并把替换后的结果返回. 代码 public class StringReplaceLast { public static String replaceLast(String src, String olds, String news){ /* 实现一个尾部替换方法 */ System.out.println(src); StringBuffer sbsrc =

  • Java编程用栈来求解汉诺塔问题的代码实例(非递归)

    [题目] 汉诺塔问题比较经典,这里修改一下游戏规则:现在限制不能从最左侧的塔直接移动到最右侧,也不能从最右侧直接移动到最左侧,而是必须经过中间.求当塔有N层的时候,打印最优移动过程和最优移动总步数. [解答] 上一篇用的是递归的方法解决这个问题,这里我们用栈来模拟汉诺塔的三个塔,也就是不用递归的方法 原理是这样的:修改后的汉诺塔问题不能让任何塔从左直接移动到右,也不能从右直接移动到左,而是要经过中间,也就是说,实际上能做的动作,只有四个:左->中,中->左,中->右,右->中 用栈

  • java 导入Excel思路及代码示例

    导出就是将List转化为Excel(listToExcel) 导入就是将Excel转化为List(excelToList) 一.思路分析 1.我们要做导入,实际上也就是先文件上传,然后读取文件的数据. 2.我们要有一个导入的模板,因为我们导入的Excel列要和我们的数据字段匹配上,所以我们要给它来一个规定,也就是模板. 3.按照我们公司的套路,是做了一个导入信息的临时表,用来存导入文件中的信息.每当导入的时候,我们先把表信息清空,再拿到数据放进来,然后我们对导入的数据进行检查,最后才全部导入.

  • java编程实现杨辉三角两种输出结果实例代码

    首先展示下结果: 简介: 杨辉三角,是二项式系数在三角形中的一种几何排列.在欧洲,这个表叫做帕斯卡三角形.帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年.杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的优美结合. 实例代码如下: package com.sxt; import java.util.Arrays; public class KeBen { p

  • Java多线程中线程的两种创建方式及比较代码示例

    1.线程的概念:线程(thread)是指一个任务从头至尾的执行流,线程提供一个运行任务的机制,对于java而言,一个程序中可以并发的执行多个线程,这些线程可以在多处理器系统上同时运行.当程序作为一个应用程序运行时,java解释器为main()方法启动一个线程. 2.并行与并发: (1)并发:在单处理器系统中,多个线程共享CPU时间,而操作系统负责调度及分配资源给它们. (2)并行:在多处理器系统中,多个处理器可以同时运行多个线程,这些线程在同一时间可以同时运行,而不同于并发,只能多个线程共享CP

  • Java下http下载文件客户端和上传文件客户端实例代码

    一.下载客户端代码 package javadownload; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; /** * @说明 导出虚拟机 * @author wxt * @version 1

  • java中对list分页并显示数据到页面实例代码

    有时候需要根据条件查询得出的数据较多,需要分页显示到页面上.这时点击下一页就不方便每次带查询条件在数据库中分页.可以在list中进行分页. page的model类: public class Page { private Integer currentPage;//当前页 private int pageSize;//每页显示记录条数 private int totalPage;//总页数 private List<?> dataList;//每页显示的数据 private int star;

  • Java编程删除链表中重复的节点问题解决思路及源码分享

    一. 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 二. 例子 输入链表:1->2->3->3->4->4->5 处理后为:1->2->5 三. 思路 个人感觉这题关键是注意指针的指向,可以定义一个first对象(值为-1,主要用于返回操作后的链表),first.next指向head,定义一个last同样指向first(主要用于操作记录要删除节点的前一个节点),定义一个p指向head,指向当前节点.

随机推荐