/**
* 最后修改于2010-1-13,之前有一个bug,测试2009-12-28与2010-01-02应该都属于2009年第52周,
* 2010年第一周开始日期是2010-01-03.(周日为一周的开始)
* @param endDate
* @return
*/
public static String weekOfYear(String endDate) {
String y = endDate.substring(0, 4);
String m = endDate.substring(5, 7);
String d = endDate.substring(8, endDate.length());
int year = Integer.parseInt(y);
int month = Integer.parseInt(m);
int date = Integer.parseInt(d);
String end = "";
Calendar c = new GregorianCalendar(year, month - 1, date);
c.setFirstDayOfWeek(Calendar.SUNDAY); // 设置每周的第一天为星期日
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);// 每周从周日开始
c.setMinimalDaysInFirstWeek(7);
String firstWeekDay = getYearWeekFirstDay(year, 1);
int weeks = 1;
weeks = c.get(Calendar.WEEK_OF_YEAR);
int ds = java.sql.Date.valueOf(endDate).compareTo(
java.sql.Date.valueOf(firstWeekDay));
end = c.get(Calendar.YEAR) + "-" + weeks;
if (ds < 0 && month == 1) {
end = year - 1 + "-" + weeks;
}
if (weeks < 10) {
end = c.get(Calendar.YEAR) + "-0" + weeks;
}
return end;
}
String firstWeekDay = getYearWeekFirstDay(year, 1);
int ds = java.sql.Date.valueOf(endDate).compareTo(
java.sql.Date.valueOf(firstWeekDay));
if (ds < 0 && month == 1) {
end = year - 1 + "-" + weeks;
}
这里加上了这样的判断,如果这几行去掉,比如:2010-01-02应该是09年第52周,这里会是:2010-52
关键的问题在于哪里仍然不清楚。这里算是总结出这里的关键所在,只能以这种“补丁”方式自己实现正确的算法,在网上也找到不少这个问题的解答,但现在仍然没有看到有谁讲清楚,求week_of_year时,setMinimalDaysInFirstWeek()怎么设置 ,或者怎么处理???
我知道直接用c.get(Calendar.WEEK_OF_YEAR);
包括设置了c.setFirstDayOfWeek(Calendar.SUNDAY); // 设置每周的第一天为星期日
用2010-01-02来测,仍然是有问题的。
其实,对于c.setMinimalDaysInFirstWeek(days); 这一年的第一周最少有多少天?最初试过1~7,发现都是有问题的。
分享到:
相关推荐
给出年月日 计算该日 是该年的第几天 小实验 保证可以实现。 绝对完美
利用C#写的一个计算GPS周的小程序,界面简单,方便新手下载GNSS星历之前日期转换
c语言编写代码,输入年月日后可计算出输入年已过天数
任意输入一个年月日,可计算出它是本年度的第几天。
问题:输入年月日,输出那天是星期几? 回答:java代码实现的;主要是循环的利用,以及闰年与平年的判断。
部分代码: int main(int argc, char *argv[]) { int month,days,year,days_per_year,i=0; char str[]="Please input year,month,days:\n"; int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};...
VC编写的有关年月日星期的计算函数,通过日期计算星期等
计算身份证年龄包括年月日
在控制台中输入年月日后,程序通过月份调整表计算出相应的周日期并输出结果。
定义一个结构体变量(包括年、月、日),编程序,要求输入年月日,程序能计算并输出该日在本年中是第几天,注意闰年问题。
年月日周时分秒温度,年月日周时分秒温度,年月日周时分秒温度
输入,年月日,输出这是该年的第多少天?部分代码:include using namespace std; int main() { cout请输入整数: 年 月 日,输入格式:2011 01 01或2011 1 1"; int year,i,j,day,sum; sum=0; int month[12]={...
计算年月日,包括闰年,采用比较简便的方法,希望能对大家有帮助。
精确计算日期物理差(计算给定的两个日期间的物理年月日时分秒差),参照日期使用DateTime的AddYears,AddMonths,AddDays,AddHours,AddMinutes,AddSeconds可精确回到计算日期
excel中知道出生年月如何自动计算年龄
C#语言下的编程 知道年月日算星期几 仅仅是个人学习做出的
c语言 输入年月日 输出这是一年中的第几天,输入时需要英文输入法,输入格式如 2018,11,22 需要逗号隔开
gps时间转换,包括年积儒略日,简化儒略日,gps周gps时间转换,包括年积儒略日,简化儒略日,gps周,年月日等
C语言源代码,任意年月日,求该天是星期几,修正以前版本中的BUG。菜鸟学编程,希大家多多指教。
Java 根据用户指定的某年某月某日,判断这一天是一年中的第几天,具体思路是:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。这是一个...