| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 911 人关注过本帖
标题:[求助]如何返回一年中所有是星期三的所有日期
只看楼主 加入收藏
HK狼
Rank: 1
等 级:新手上路
威 望:1
帖 子:46
专家分:0
注 册:2007-9-9
收藏
 问题点数:0 回复次数:8 
[求助]如何返回一年中所有是星期三的所有日期
如何返回一年中所有是星期三的所有日期

用Calendar 没想到合适的方法啊

各位帮帮忙 Calendar 有没有方法实现?
搜索更多相关主题的帖子: Calendar 
2007-10-09 21:31
george_vcool
Rank: 2
等 级:新手上路
威 望:3
帖 子:453
专家分:0
注 册:2007-7-23
收藏
得分:0 

可以给gregoriancalendar赋值第一年的第一天然后取出Day of week字段的值判断是否属于星期三,然后add()calendar的字段day的值,再判断!!!
这个循环直到最后一天!!!

2007-10-09 21:52
HK狼
Rank: 1
等 级:新手上路
威 望:1
帖 子:46
专家分:0
注 册:2007-9-9
收藏
得分:0 

一会试一下

刚才用了一种很笨的方法
package test;
import java.util.Calendar;

public class test_b {
public test_b() {
}
public static void main(String args[]){
int[] month={31,28,31,30,31,30,31,31,30,31,30,31};
int i,tmp,temp;
int begin=1; //这一年的第一天是星期几
int key=3; //要输出星期几的日期
for(i=0;i<month.length;i++){
temp=month[i];
if(begin<=key){
tmp=key-begin+1;
}else{
tmp=7-key+4;
}
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
while(tmp<=month[i]){
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
}
key=tmp-month[i]; // 设置下个月的第一天是星期几?
}
}
}


2007-10-09 22:09
易水辰
Rank: 1
等 级:新手上路
威 望:1
帖 子:136
专家分:0
注 册:2007-6-17
收藏
得分:0 
可以简化一下代码:
public class Test_b {
public void test_b() {
}
public static void main(String args[]){
int[] month={31,28,31,30,31,30,31,31,30,31,30,31};
int i,tmp;
int begin=1; //这一年的第一天是星期几
int key=3; //要输出星期几的日期
for(i=0;i<month.length;i++){
if(begin<=key){
tmp=key-begin+1;
}else{
tmp=7-key+4;
}
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
while(tmp<=month[i]){
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
}
key=tmp-month[i]; // 设置下个月的第一天是星期几?
}
}
}

[此贴子已经被作者于2007-10-10 23:57:29编辑过]


^_^没事咱就灌水哈^_^!!!
2007-10-10 23:56
易水辰
Rank: 1
等 级:新手上路
威 望:1
帖 子:136
专家分:0
注 册:2007-6-17
收藏
得分:0 
以下是引用HK狼在2007-10-9 22:09:17的发言:

一会试一下

刚才用了一种很笨的方法
package test;
import java.util.Calendar;

public class test_b {
public test_b() {
}
public static void main(String args[]){
int[] month={31,28,31,30,31,30,31,31,30,31,30,31};
int i,tmp,temp;
int begin=1; //这一年的第一天是星期几
int key=3; //要输出星期几的日期
for(i=0;i<month.length;i++){
temp=month[i];
if(begin<=key){
tmp=key-begin+1;
}else{
tmp=7-key+4;
}
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
while(tmp<=month[i]){
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
}
key=tmp-month[i]; // 设置下个月的第一天是星期几?
}
}
}

即红色部分去掉
package test;
import java.util.Calendar
;

public class test_b {
public test_b() {
}
public static void main(String args[]){
int[] month={31,28,31,30,31,30,31,31,30,31,30,31};
int i,tmp,temp;
int begin=1; //这一年的第一天是星期几
int key=3; //要输出星期几的日期
for(i=0;i<month.length;i++){
temp=month[i];
if(begin<=key){
tmp=key-begin+1;
}else{
tmp=7-key+4;
}
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
while(tmp<=month[i]){
System.out.println(i+1+"月"+tmp+"日");
tmp=tmp+7;
}
key=tmp-month[i]; // 设置下个月的第一天是星期几?
}
}
}


^_^没事咱就灌水哈^_^!!!
2007-10-11 00:00
易水辰
Rank: 1
等 级:新手上路
威 望:1
帖 子:136
专家分:0
注 册:2007-6-17
收藏
得分:0 
回头我也写个!!!


^_^没事咱就灌水哈^_^!!!
2007-10-11 00:13
魔鬼之子
Rank: 1
来 自:地狱之都
等 级:新手上路
帖 子:100
专家分:0
注 册:2007-9-22
收藏
得分:0 
回复:(易水辰)可以简化一下代码:public class Tes...
if(begin<=key){
tmp=key-begin+1;
}else{
tmp=7-key+4;
}
以上代码可简化为:
tmp=key-begin+1;
因为begin的值为1;key的值只可能是>=1,不可能<1;
这与while的条件和temp=temp+7有关.

只有仇恨才是永恒的
2007-10-11 11:03
justing_xxt
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2005-3-9
收藏
得分:0 

public class Days {

/**
* 根据输入的年份(year)和星期几(targetDate),返回该年份中所有为星期几的日期
* @param year
* @param targetDate
* @return 所有为星期几的日期的集合
*/
public static ArrayList<String> getDays(int year, int targetDate) {
ArrayList<String> days = new ArrayList<String>();

Calendar calendar = Calendar.getInstance();
// 第一天是星期天,因此星期三实际上是一个星期中的第四天
int target_date = targetDate + 1;

// 这一年有多少天
calendar.set(year, 11, 31);
int days_of_year = calendar.get(Calendar.DAY_OF_YEAR);

// 这一年中的第一天是星期几
calendar.set(year, 0, 1);
int first_date_of_the_year = calendar.get(Calendar.DAY_OF_WEEK);

// 第一个星期几是这一年中的第几天
int first_day_of_the_target;
if (first_date_of_the_year < target_date) {
first_day_of_the_target = target_date - first_date_of_the_year + 1;
} else if (first_date_of_the_year == target_date) {
first_day_of_the_target = 1;
} else {
first_day_of_the_target =
7 - first_date_of_the_year + target_date + 1;
}

// 把日期格式化存放在数组中,可以自定义格式
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
for (int i = first_day_of_the_target; i < days_of_year; i += 7) {
calendar.set(year, 0, i);
days.add(df.format(calendar.getTime()));
}

return days;
}

public static void main(String[] args) {
// 找出2007年所有为星期三的日期
System.out.println(getDays(2007, 3));
// 找出2008年所有为星期二的日期
System.out.println(getDays(2008, 2));
}
}

2007-10-11 12:46
HK狼
Rank: 1
等 级:新手上路
威 望:1
帖 子:46
专家分:0
注 册:2007-9-9
收藏
得分:0 
package test;
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* 用java提供的类做
* @author haikuang
*/
public class test_a {

/** Creates a new instance of test_a */
public test_a() {
}
public static void main(String args[]){
Calendar rn=new GregorianCalendar();
rn.set(2007,0,1);
while(rn.get(Calendar.YEAR)==2007){
if(rn.get(Calendar.DAY_OF_WEEK)==4){//星期三
System.out.println(rn.get(Calendar.YEAR)+"/"+(rn.get(Calendar.MONTH)+1)+"/"+rn.get(Calendar.DAY_OF_MONTH));
}
rn.add(Calendar.DAY_OF_MONTH,1);
}
}
}

2007-10-11 13:36
快速回复:[求助]如何返回一年中所有是星期三的所有日期
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.041263 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved