`
iwebcode
  • 浏览: 2071917 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

如何得到某周,月的第一天和最后一天的日期

 
阅读更多
1.如何得到某周,月的第一天和最后一天的日期	Copy to clipboard
Posted by: caike
Posted on: 2006-09-01 21:08

要做一个calendar, 有个功能是按周,按月查看事件,怎么得到某个周的开始日期和结束日期呢?
GregorianCalendar now = new GregorianCalendar();
now.get(Calendar.DAY_OF_WEEK)
得到的是当天是这周的第几天。
请问怎样得到这周,月的开始日期呢?
谢谢
2.Re:如何得到某周,月的第一天和最后一天的日期 [Re: caike]	Copy to clipboard
Posted by: awrong
Posted on: 2006-09-02 00:07

WEEK_OF_MONTH,当前星期是这个有的第几个星期。
DAY_OF_WEEK,得到月开始是星期几,也就是前面空几天。
WEEK_OF_YEAR,本用是本年第几周。
你用一个int[38]来排,set(int year,int month,1),每月开始的一天就是int month[DAY_OF_WEEK],然后依次排,就出来了。
3.Re:如何得到某周,月的第一天和最后一天的日期 [Re: caike]	Copy to clipboard
Posted by: caike
Posted on: 2006-09-02 12:12

用了一个笨方法解决这个问题,希望哪个大虾有更简便的方法通知偶一声

import java.util.Calendar;
import java.util.Date;

/**
 * 日期工具
 * 
 * @author Cai Ke
 * 
 */
public class DateUtil {

  /**
   * 获取给定时间所在周的第一天(Sunday)的日期和最后一天(Saturday)的日期
   * 
   * @param calendar
   * @return Date数组,[0]为第一天的日期,[1]最后一天的日期
   */
  public Date[] getWeekStartAndEndDate(Calendar calendar) {
    Date[] dates = new Date[2];
    Date firstDateOfWeek, lastDateOfWeek;
    // 得到当天是这周的第几天
    int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
    // 减去dayOfWeek,得到第一天的日期,因为Calendar用0-6代表一周七天,所以要减一
    calendar.add(Calendar.DAY_OF_WEEK, -(dayOfWeek - 1));
    firstDateOfWeek = calendar.getTime();
    // 每周7天,加6,得到最后一天的日子
    calendar.add(Calendar.DAY_OF_WEEK, 6);
    lastDateOfWeek = calendar.getTime();

    dates[0] = firstDateOfWeek;
    dates[1] = lastDateOfWeek;
    return dates;
  }

  /**
   * 获取给定时间所在月的第一天F的日期和最后一天的日期
   * 
   * @param calendar
   * @return Date数组,[0]为第一天的日期,[1]最后一天的日期
   */
  public Date[] getMonthStartAndEndDate(Calendar calendar) {
    Date[] dates = new Date[2];
    Date firstDateOfMonth, lastDateOfMonth;
    // 得到当天是这月的第几天
    int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
    // 减去dayOfMonth,得到第一天的日期,因为Calendar用0代表每月的第一天,所以要减一
    calendar.add(Calendar.DAY_OF_MONTH, -(dayOfMonth - 1));
    firstDateOfMonth = calendar.getTime();
    // calendar.getActualMaximum(Calendar.DAY_OF_MONTH)得到这个月有几天
    calendar.add(Calendar.DAY_OF_MONTH, calendar
        .getActualMaximum(Calendar.DAY_OF_MONTH) - 1);
    lastDateOfMonth = calendar.getTime();

    dates[0] = firstDateOfMonth;
    dates[1] = lastDateOfMonth;
    return dates;
  }
  public static void main(String[] args) {

    DateUtil dateUtil = new DateUtil();
    Calendar now = Calendar.getInstance();
    Date[] weekDates = dateUtil.getWeekStartAndEndDate(now);
    Date[] monthDates = dateUtil.getMonthStartAndEndDate(now);

    System.out.println("firstDateOfWeek: " + weekDates[0]
        + " ,lastDateOfWeek: " + weekDates[1]);
    System.out.println("firstDateOfMonth: " + monthDates[0]
        + " ,lastDateOfMonth: " + monthDates[1]);

  }
}

得到两个日期相隔的周数

	public static int computeWeek(Date startDate, Date endDate) {//得到相隔的周数


		int weeks = 0;
		Calendar beginCalendar = Calendar.getInstance();
		beginCalendar.setTime(startDate);
		Calendar endCalendar = Calendar.getInstance();
		endCalendar.setTime(endDate);
		while (beginCalendar.before(endCalendar)) {
			// 如果开始日期和结束日期在同年、同月且当前月的同一周时结束循环
			if (beginCalendar.get(Calendar.YEAR) == endCalendar.get(Calendar.YEAR) && beginCalendar.get(Calendar.MONTH) == endCalendar.get(Calendar.MONTH) && beginCalendar.get(Calendar.DAY_OF_WEEK_IN_MONTH) == endCalendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)) {
				break;
			} else {
				beginCalendar.add(Calendar.DAY_OF_YEAR, 7);
				weeks += 1;
			}
		}
		return weeks;
	}

得到两个日期相隔的月份

	public static int getMonth(Date start, Date end) {
		if (start.after(end)) {
			Date t = start;
			start = end;
			end = t;
		}
		Calendar startCalendar = Calendar.getInstance();
		startCalendar.setTime(start);
		Calendar endCalendar = Calendar.getInstance();
		endCalendar.setTime(end);
		Calendar temp = Calendar.getInstance();
		temp.setTime(end);
		temp.add(Calendar.DATE, 1);

		int year = endCalendar.get(Calendar.YEAR) - startCalendar.get(Calendar.YEAR);
		int month = endCalendar.get(Calendar.MONTH) - startCalendar.get(Calendar.MONTH);

		if ((startCalendar.get(Calendar.DATE) == 1) && (temp.get(Calendar.DATE) == 1)) {
			return year * 12 + month + 1;
		} else if ((startCalendar.get(Calendar.DATE) != 1) && (temp.get(Calendar.DATE) == 1)) {
			return year * 12 + month;
		} else if ((startCalendar.get(Calendar.DATE) == 1) && (temp.get(Calendar.DATE) != 1)) {
			return year * 12 + month;
		} else {
			return (year * 12 + month - 1) < 0 ? 0 : (year * 12 + month);
		}
	}

得到两个日期相隔的天数

	public static Long getDaysBetween(Date startDate, Date endDate) {  
        Calendar fromCalendar = Calendar.getInstance();  
        fromCalendar.setTime(startDate);  
        fromCalendar.set(Calendar.HOUR_OF_DAY, 0);  
        fromCalendar.set(Calendar.MINUTE, 0);  
        fromCalendar.set(Calendar.SECOND, 0);  
        fromCalendar.set(Calendar.MILLISECOND, 0);  
  
        Calendar toCalendar = Calendar.getInstance();  
        toCalendar.setTime(endDate);  
        toCalendar.set(Calendar.HOUR_OF_DAY, 0);  
        toCalendar.set(Calendar.MINUTE, 0);  
        toCalendar.set(Calendar.SECOND, 0);  
        toCalendar.set(Calendar.MILLISECOND, 0);  
  
        return (toCalendar.getTime().getTime() - fromCalendar.getTime().getTime()) / (1000 * 60 * 60 * 24);  
    } 

来源:http://www.cjsdn.net/post/print?bid=1&id=181071

分享到:
评论

相关推荐

    C#获取上个月第一天和最后一天日期的方法

    在C#编程中,有时我们需要获取特定月份的第一天和最后一天日期,比如上个月的日期范围。这在处理数据统计、报表生成或者时间相关的业务逻辑中非常常见。本篇文章将详细解析如何使用C#来获取上个月的第一天和最后一天...

    java 获取时间 本周本年本月第一天最后一天

    这里的关键在于先将日期设置为当前月份的第一天,然后通过向日期添加一个月并再次设置为该月的第一天,再减去一天来获得当前月份的最后一天。 #### 本年第一天与最后一天 获取本年的第一天和最后一天也遵循类似的...

    oracle时间函数,如何取得某月的第一天和最后一天

    本文将详细介绍几个常用的 Oracle 时间函数,并通过示例解释如何使用这些函数来获取某个月的第一天和最后一天。 #### 1. ADD_MONTHS 函数 **功能描述**:`ADD_MONTHS` 函数用来给一个日期增加指定数量的月份。 **...

    ORACLE获取周月季年的第一天和最后一天

    在Oracle数据库中,获取特定时间范围的第一天和最后一天对于数据查询和分析至关重要。以下将详细解释如何使用SQL语句来获取周、月、季、年以及上月、前一天、上一小时的开始和结束日期。 1. **本周** 获取本周的第...

    易语言取上个月第一天和最后一天

    通过这段源码,开发者可以方便地在易语言程序中获取到上个月的第一天和最后一天,这对于数据分析、报表生成或其他需要处理日期的场景非常实用。理解并掌握这一功能,有助于提升易语言编程能力,特别是在处理时间序列...

    javascript获取当月第一天和最后一天

    标题“javascript获取当月第一天和最后一天”涉及的是JavaScript编程中的日期处理技术,特别是如何获取当前月份的第一天和最后一天的日期。JavaScript的Date对象是处理日期和时间的主要工具,但默认方法并不直接提供...

    asp.net返回一周、一月、一年的第一天和最后一天

    例如,获取当前周的第一天和最后一天、当前月的第一天和最后一天以及当前年份的第一天和最后一天。这些操作对于数据分析、报表生成等场景尤为重要。本文将详细介绍如何在ASP.NET中实现这一功能。 #### 代码解析 ...

    易语言源码易语言取上个月第一天和最后一天源码.rar

    在“易语言源码易语言取上个月第一天和最后一天源码.rar”这个压缩包中,包含的源代码是用易语言编写的一个功能,即获取上一个月的第一天和最后一天的日期。 易语言的日期处理函数是编程中的一个重要部分,因为日期...

    易语言取上个月第一天和最后一天源码

    "易语言取上个月第一天和最后一天源码"这个标题所涉及的知识点,主要是关于如何利用易语言的内置函数和逻辑来获取指定月份的第一天和最后一天的日期。易语言作为一款中国本土的编程语言,以其独特的中文语法和丰富的...

    C#每月第一天和最后一天

    在C#编程语言中,获取每个月的第一天和最后一天是一个非常实用的功能,尤其是在处理与日期相关的数据时。本文将详细解析如何使用C#代码来实现这一功能,并对给定的示例代码进行深入分析。 ### C# 获取每月的第一天 ...

    获得当前月的第一天和最后一天

    在JavaScript编程中,获取当前月份的第一天和最后一天是常见的日期处理需求,这对于日历应用、数据分析或者其他与时间相关的功能非常有用。以下是如何利用JavaScript实现这个功能的详细说明。 首先,我们来理解“js...

    获取当月的第一天和最后一天

    首先,我们来理解如何获取当前月的第一天和最后一天。在JavaScript中,Date对象是处理日期和时间的主要工具。但是,它并不直接提供获取特定月份第一天或最后一天的内置方法。因此,开发者通常需要自定义函数来实现这...

    js中获取当前月的第一天和最后一天

    在JavaScript中,获取当前月的第一天和最后一天是常见的日期处理任务,这有助于进行日历功能的开发或者数据统计等场景。以下是如何实现这个功能的详细步骤和相关知识点: 1. **JavaScript日期对象**:首先,我们...

    SQL获取当前月的第一天和最后一天和当前月一共几天

    在这个计算过程中,我们首先将`@NOW`减去其日数,得到当月的第一天,然后向这个日期添加一个月(DATEADD(MONTH, 1, ...)),得到下月的第一天,最后再减去1,得到的就是本月的最后一天。最后,使用`DAY`函数获取...

    取上个月第一天和最后一天.rar

    在IT领域,编程时常需要获取特定日期范围,例如上个月的第一天和最后一天。这个压缩包文件"取上个月第一天和最后一天.rar"显然包含了易语言(E Language)的源代码,用于实现这一功能。易语言是一种简洁明了、易学...

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

    #region 得到一个月的第一天和最后一天的日期 /// &lt;summary&gt; /// 得到本月的第一天日期 /// &lt;/summary&gt; /// &lt;returns&gt;DateTime&lt;/returns&gt; public static DateTime GetFirstDayOfMonth() { return GetFirstDayOfMonth...

    C#中的DateTime:本周,本月,本年,本周第一天

    - `startYear`和`endYear`分别表示本年的第一天和最后一天,直接通过指定年份和月份来获取。 #### 四、扩展功能 除了上述基本功能外,还可以利用`AddDays()`、`AddMonths()`、`AddYears()`等方法组合实现更多功能...

    java代码获取当前月第一天和最后一天的毫秒值(csdn)————程序.pdf

    在Java编程中,有时我们需要获取特定月份的第一天和最后一天的毫秒值,这在处理时间范围、数据统计或者日志记录等场景中非常常见。本文将详细解释如何使用Java的`Calendar`类来实现这一功能,以满足上述标题和描述的...

    Java实现获取某年某月第一天/最后一天的方法

    在Java编程语言中,获取某年某月的第一天和最后一天是常见的日期处理需求,这在数据分析、报表生成以及各种日期相关的业务逻辑中都非常重要。本文将详细讲解如何使用Java来实现这一功能。 首先,我们需要了解Java中...

Global site tag (gtag.js) - Google Analytics