java中如何计算本周开始和结束的日期

java中如何计算本周开始和结束的日期,第1张

思路:首先是获取该月的实际天数,然后从1号遍历直至该月最后一天,利用Calendar类找出该日是一周中的第几天,

(1)若该日是周日,则视为一周结束,并用该日期减去6找到该周的开始日期,若相减结果小于等于1,则说明该周起始日期应该是本月1号。

(1)若该日不是周日,且是该月最后一天,则应该在上面计算的基础上再加一周,视月末为该周的结束日,该周起始日期应为改日期减去改日

在一周中的位置加2,例如:2013-09-30号是周一,则视为9月份中的第六周,开始日期是30-2+2

提示:Calendar 类中视周日为一周的开始,值是1

示例代码:

[java] view plain copy

public static void printfWeeks(String date) throws Exception {

// String date = "2013-09";

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");

Date date1 = dateFormatparse(date);

Calendar calendar = new GregorianCalendar();

calendarsetTime(date1);

int days = calendargetActualMaximum(CalendarDAY_OF_MONTH);

Systemoutprintln("days:" + days);

int count = 0;

for (int i = 1; i <= days; i++) {

DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");

Date date2 = dateFormat1parse(date + "-" + i);

calendarclear();

calendarsetTime(date2);

int k = new Integer(calendarget(CalendarDAY_OF_WEEK));

if (k == 1) {// 若当天是周日

count++;

Systemoutprintln("-----------------------------------");

Systemoutprintln("第" + count + "周");

if (i - 6 <= 1) {

Systemoutprintln("本周开始日期:" + date + "-" + 1);

} else {

Systemoutprintln("本周开始日期:" + date + "-" + (i - 6));

}

Systemoutprintln("本周结束日期:" + date + "-" + i);

Systemoutprintln("-----------------------------------");

}

if (k != 1 && i == days) {// 若是本月最好一天,且不是周日

count++;

Systemoutprintln("-----------------------------------");

Systemoutprintln("第" + count + "周");

Systemoutprintln("本周开始日期:" + date + "-" + (i - k + 2));

Systemoutprintln("本周结束日期:" + date + "-" + i);

Systemoutprintln("-----------------------------------");

}

}

}

测试代码:

[java] view plain copy

public static void main(String[] args) throws Exception {

String s = "2013-";

for (int i = 1; i <= 12; i++) {

Systemoutprintln("");

Systemoutprintln("月份:" + i);

printfWeeks(s + i);

Systemoutprintln("");

}

// printfWeeks(s + 2);

}

import javatextSimpleDateFormat;

import javautilDate;

import javautilCalendar;

public class WorkDay {

public static void main(String[] args) {

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd E");

for (Date date : getWeekDay()) {

Systemoutprintln(dateFormatformat(date));

}

}

public static Date[] getWeekDay() {

Calendar calendar = CalendargetInstance();

while (calendarget(CalendarDAY_OF_WEEK) != CalendarMONDAY) {

calendaradd(CalendarDAY_OF_WEEK, -1);

}

Date[] dates = new Date[5];

for (int i = 0; i &lt; 5; i++) {

dates[i] = calendargetTime();

calendaradd(CalendarDATE, 1);

}

return dates;

}

}

如果每周指的是从星期一开始,那么这个程序可以达到你的要求。

如果每周指得是从星期日开始,那么请说明,我再修改。

PHP的date函数是十分强大的。提供了非常多的格式给我们用。这里主要使用date相关函数就能达成目的,下面直接上代码。

<php

    $timestr = time();

    $now_day = date('w',$timestr);

    //获取一周的第一天,注意第一天应该是星期天

    $sunday_str = $timestr - $now_day606024;

    $sunday = date('Y-m-d', $sunday_str);

    //获取一周的最后一天,注意最后一天是星期六

    $strday_str = $timestr + (6-$now_day)606024;

    $strday = date('Y-m-d', $strday_str);

    echo "星期天: $sunday\n";

    echo "星期六: $strday\n";

    exit;

>

输出结果:

如果你要星期一到星期日的自行加减一天

提倡了一下中文写,

static public void main(String 参数[]){

SimpleDateFormat 格式=new SimpleDateFormat("y年M月d日 E H时m分s秒",LocaleCHINA);

Calendar 日历=CalendargetInstance(LocaleCHINA);

//当前时间,貌似多余,其实是为了所有可能的系统一致

日历setTimeInMillis(SystemcurrentTimeMillis());

Systemoutprintln("当前时间:"+格式format(日历getTime()));

日历set(CalendarDAY_OF_WEEK, CalendarMONDAY);

Systemoutprintln("周一时间:"+格式format(日历getTime()));

}

===========

改到后天测了一下

输出

当前时间:2011年8月31日 星期三 12时32分40秒

周一时间:2011年8月29日 星期一 12时32分40秒

代码

// 获取当前星期的星期一的日期,返回的是一个Date对象。

function getMonDate()

{

var d=new Date(),

day=dgetDay(),

date=dgetDate();

if(day==1)

return d;

if(day==0)

dsetDate(date-6);

else

dsetDate(date-day+1);

return d;

}

// 0-6转换成中文名称

function getDayName(day)

{

var day=parseInt(day);

if(isNaN(day) || day<0 || day>6)

return false;

var weekday=["星期天","星期一","星期二","星期三","星期四","星期五","星期六"];

return weekday[day];

}

// d是当前星期一的日期对象

var d=getMonDate();

var arr=[];

for(var i=0; i<7; i++)

{

arrpush(dgetFullYear()+'年'+(dgetMonth()+1)+'月'+dgetDate()+'日 ('+getDayName(dgetDay())+')');

dsetDate(dgetDate()+1);

}

显示

2013年3月18日 (星期一)

2013年3月19日 (星期二)

2013年3月20日 (星期三)

2013年3月21日 (星期四)

2013年3月22日 (星期五)

2013年3月23日 (星期六)

2013年3月24日 (星期天)

以上就是关于java中如何计算本周开始和结束的日期全部的内容,包括:java中如何计算本周开始和结束的日期、java 获得本周一到周五的日期、php怎么获取本周的时间格式开始和结束等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9575188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存