java 日期,根据今天的日期,输出这一周的其他日期,例如:2013-7-31,输出这周从第一天开始到今天的日期

java 日期,根据今天的日期,输出这一周的其他日期,例如:2013-7-31,输出这周从第一天开始到今天的日期,第1张

public static void main(String[] agrs) {

String newtime="2013-8-4";

Systemoutprintln(newtime+""+testDate(newtime));

}

public static String testDate(String newtime) {

String dayNames[] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

int week1[] = {7,1,2,3,4,5,6};

Calendar c = CalendargetInstance();// 获得一个日历的实例

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

try {

csetTime(sdfparse(newtime));

} catch (ParseException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

String a=dayNames[cget(CalendarDAY_OF_WEEK)-1];

int b=week1[cget(CalendarDAY_OF_WEEK)-1];

if(b!=7){

cset(CalendarDAY_OF_WEEK, CalendarMONDAY);

}else{

cadd(CalendarWEEK_OF_MONTH, -1);

cset(CalendarDAY_OF_WEEK, 2);

}

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

if(i==1){

Systemoutprintln(sdfformat(cgetTime()));//本周一

}

cadd(CalendarDATE,1);

Systemoutprintln(sdfformat(cgetTime()));

}

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

return a;

}

测试结果:

2013-07-29

2013-07-30

2013-07-31

2013-08-01

2013-08-02

2013-08-03

2013-08-04

-------------

2013-8-4星期日

package comrxlamozhidao;

import javatextSimpleDateFormat;

import javautilCalendar;

public class Test {

    public static void main(String[] args) {

        // 获取离当前日期最近的一个星期天

        getLastSunday();

    }

    /

      获取离当前日期最近的一个星期天

     /

    public static void getLastSunday() {

        // 获取当前日期

        Calendar calendar = CalendargetInstance();

        // 距离上个周日的差值

        long diffTime = 0L;

        // 今天星期几,注:此处周日 = 1 ,周一 = 2 。。。。

        int dayOfWeek = calendarget(CalendarDAY_OF_WEEK);

        Systemoutprintln("toady:" + dayOfWeek);

        // 如果今天是周日,看需求,是取今天的,还是取上周的

        if (dayOfWeek == 1){

            // 取今天

             // dayOfWeek = 1;

            // 取上周

            dayOfWeek = 8;

        }

        // 计算当前时间距离上周日的时差,此处一周的开始从周日算起,根据需要

        diffTime = (dayOfWeek - 1 )  24  60  60  1000;

        calendarsetTimeInMillis(SystemcurrentTimeMillis() - diffTime);

        //

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        Systemoutprintln("lastSunday:" + dateFormatformat(calendargetTime()));

        // 如果一周的开始从周一计算,并且请注释掉上面的  if (dayOfWeek == 1) 处判断,需要重新判断

        if (dayOfWeek == 1){

            // 取今天

            // dayOfWeek = 0;

            // 取上周

            dayOfWeek = 7;

        }

        diffTime = dayOfWeek  24  60  60  1000;

        calendarsetTimeInMillis(SystemcurrentTimeMillis() - diffTime);

        Systemoutprintln("lastSunday:" + dateFormatformat(calendargetTime()));

    }

}

有不明白在问我

public static void main(String[] agrs) {

String newtime="2013-7-21";

Systemoutprint(testDate(newtime));

}

public static String testDate(String newtime) {

String dayNames[] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

Calendar c = CalendargetInstance();// 获得一个日历的实例

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

try {

csetTime(sdfparse(newtime));

} catch (ParseException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

return dayNames[cget(CalendarDAY_OF_WEEK)-1];

}

对于单双数日,能被2整除就是双数日,反之是单数日

我的程序是输入某年某周,输出这一周的开始日期和结束时期,不知是否符合你的需要。至少Java是不直接提供这种方法的。

import javautil;

public class Test31 {

public static void main(String[] args) {

int year, year1, year2, month1, month2, day1, day2, week, sum = 0;

int[] days = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

int i;

Scanner scan = new Scanner(Systemin);

Systemoutprint("年:");

year = scannextInt();

Systemoutprint("周次:");

week = scannextInt();

if (year < 0) {

Systemoutprintln("年份错误,必须大于等于0");

return;

}

if (week < 1 || week > 54) {

Systemoutprintln("周次错误,必须位于 1 53 之间");

return;

}

sum += 7 (week - 1);

//修正总天数

Calendar c = CalendargetInstance();

cset(year, 0, 1);

switch (cget(CalendarDAY_OF_WEEK))

{

case CalendarTUESDAY:

{

sum -= 1;

break;

}

case CalendarWEDNESDAY:

{

sum -= 2;

break;

}

case CalendarTHURSDAY:

{

sum -= 3;

break;

}

case CalendarFRIDAY:

{

sum -= 4;

break;

}

case CalendarSATURDAY:

{

sum -= 5;

break;

}

case CalendarSUNDAY:

{

sum -= 6;

break;

}

default:

break;

}

if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)) {

days[1] = 29;

}

for (i = 0; i < dayslength; i++) {

if (sum >= days[i]) {

sum -= days[i];

}

else {

break;

}

}

year1 = year;

month1= i + 1;

day1 = sum + 1;

//修改开始日期

if (day1 < 1) {

day1 += days[11];

month1 = 12;

year1--;

}

year2 = year1;

month2 = month1;

day2 = day1 + 6;

if (day2 > days[month1 - 1]) {

day2 -= days[month1 - 1];

month2++;

if (month2 > 12) {

month2 = 1;

year2++;

}

}

Systemoutprintf("%d年第%d周 : %d年%d月%d日 ~ %d年%d月%d日", year, week, year1, month1, day1, year2, month2, day2);

}

}

输出测试:

年:2011

周次:22

2011年第22周 : 2011年5月23日 ~ 2011年5月29日

年:2011

周次:1

2011年第1周 : 2010年12月27日 ~ 2011年1月2日

这是从星期一至星期日。

也可以这样:

public static void main(String[] args){

Scanner scan = new Scanner(Systemin);

Systemoutprint("年:");

int year = scannextInt();

Systemoutprint("周:");

int week = scannextInt();

Calendar c = CalendargetInstance();

cset(CalendarDAY_OF_WEEK, 1);

cset(CalendarWEEK_OF_YEAR, week);

//该周第一天(星期日)所在的日期

int y1 = cget(CalendarYEAR);

int m1 = cget(CalendarMONTH) + 1;

int d1 = cget(CalendarDATE);

cadd(CalendarDATE, 6);

//该周最后一天(星期六)所在的日期

int y2 = cget(CalendarYEAR);

int m2 = cget(CalendarMONTH) + 1;

int d2 = cget(CalendarDATE);

Systemoutprintf("%d年第%d周:%d-%d-%d ~ %d-%d-%d", year, week, y1, m1, d1, y2, m2, d2);

}

这是从星期日开始,如:

年:2011

周:22

2011年第22周:2011-5-22 ~ 2011-5-28

这个问题不是很难,有关判断日期是否合法,其实已经有现成的包可以用,没有必要自己写方法来实现,代码如下:

import javautil;

public class WeekTest {

private String[][] javadays=new String[12][31];

public WeekTest(){

String[] weeks=new String[]{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

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

for(int j=0;j<31;j++){

GregorianCalendar gc=new GregorianCalendar();

gcsetLenient(false);

try{

gcset(2008,i,j+1);

int week=gcget(CalendarDAY_OF_WEEK);

javadays[i][j]=new String(weeks[week-1]);

}catch(Exception e){}

}

}

}

public void randomPrint(){

HashSet<Integer> hs=new HashSet<Integer>();

while(true){

if(hssize()==10)

break;

int day=((int)(Mathrandom()1000))%366;

if(hscontains(new Integer(day)))

continue;

hsadd(new Integer(day));

}

for(Integer day:hs){

GregorianCalendar gc=new GregorianCalendar(2008,0,1);

gcadd(CalendarDATE,dayintValue());

int month=gcget(CalendarMONTH)+1;

int date=gcget(CalendarDAY_OF_MONTH);

Systemoutprintln("2008年"+(month<10"0"+month:month)+"月"+(date<10"0"+date:date)+"日\t"+javadays[month-1][date-1]);

}

}

public void replaceAll(){

String[][] weekStr=new String[2][];

weekStr[0]=new String[]{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

weekStr[1]=new String[]{"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

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

for(int j=0;j<31;j++){

for(int k=0;k<7;k++){

if(javadays[i][j]!=null && javadays[i][j]equals(weekStr[0][k]))

javadays[i][j]=new String(weekStr[1][k]);

}

}

}

}

public static void main(String[] args) {

WeekTest wt=new WeekTest();

wtrandomPrint();

wtreplaceAll();

wtrandomPrint();

}

}

public static void main(String[] args) {

        //获得当前日期

        Date date = new Date();

        //格式化日期,EEEE为星期几格式化

        SimpleDateFormat dateFm = new SimpleDateFormat("EEEE");

        Systemoutprintln("今天是:"+dateFmformat(date));

        //再举个格式化的例子:

        Systemoutprintln("今天是:"+new SimpleDateFormat("yyyyMMddEEEE")format(date));

    }

1、使用Calendar类。

Calendar cal = CalendargetInstance();

calset(CalendarYEAR, 2016); // 2016年

calset(CalendarWEEK_OF_YEAR, 10); // 设置为2016年的第10周

calset(CalendarDAY_OF_WEEK, 2); // 1表示周日,2表示周一,7表示周六

Date date = calgetTime();

以上就能得到2016年第10周的周一的Date时间。

注:上面代码是手工敲的,没有放到eclipse中运行,有写错的地方请谅解

以上就是关于java 日期,根据今天的日期,输出这一周的其他日期,例如:2013-7-31,输出这周从第一天开始到今天的日期全部的内容,包括:java 日期,根据今天的日期,输出这一周的其他日期,例如:2013-7-31,输出这周从第一天开始到今天的日期、在java里怎么取离当前日期最近的一个星期天、Java 日期如何判断是星期几求大神代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存