
我的程序是输入某年某周,输出这一周的开始日期和结束时期,不知是否符合你的需要。至少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
这个可以用dwr框架来做,你可以google一下dwr框架,是前台页面通过js直接调用后台方法的轻量级框架。
至于时间算法
1显示本周,那得算出当前周的周一到周7(国外是周日到周六为一周)是几号到几号。 方法是:
private static HashMap<String, String> getWeekByDate() {
HashMap<String, String> dayMap = new HashMap<String, String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // 设置时间格式
Calendar cal = CalendargetInstance();
calsetTime(new Date());
// 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
int dayWeek = calget(CalendarDAY_OF_WEEK);// 获得当前日期是一个星期的第几天
if (1 == dayWeek) {
caladd(CalendarDAY_OF_MONTH, -1);
}
Systemoutprintln("要计算日期为:" + sdfformat(calgetTime())); // 输出要计算日期
calsetFirstDayOfWeek(CalendarMONDAY);// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
int day = calget(CalendarDAY_OF_WEEK);// 获得当前日期是一个星期的第几天
caladd(CalendarDATE, calgetFirstDayOfWeek() - day);// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
String imptimeBegin = sdfformat(calgetTime());
Systemoutprintln("所在周星期一的日期:" + imptimeBegin);
dayMapput("Monday", imptimeBegin);
caladd(CalendarDATE, 6);
String imptimeEnd = sdfformat(calgetTime());
Systemoutprintln("所在周星期日的日期:" + imptimeEnd);
dayMapput("SunDay", imptimeEnd);
return dayMap;
}
得到了周一和周日具体是那天,直接去数据库查就OK了,怎么查可以去看下SQL里的between关键字
还有一些写不下,追问一下
Calendar cal = CalendargetInstance();
int i = 1;
//DAY_OF_WEEK获取当前时间是一个星期的第几天,星期日是第一天 星期一是第二天,以此类推
//CalendarMONDAY判断是不是星期1
while(calget(CalendarDAY_OF_WEEK) != CalendarMONDAY){
calset(CalendarDAY_OF_MONTH, i++);//设置这个月的星期1 为几号
}
Date firstMonday = calgetTime();//取得日期和时间
String dtStr = new SimpleDateFormat("MM月dd日")format(firstMonday);//格式化日期
Systemoutprintln(dtStr);
public static void main(String[] args) throws ParseException {
int year = 2017;
Calendar calendar = new GregorianCalendar(year, 0, 1);
int i = 1;
while (calendarget(CalendarYEAR) < year + 1) {
calendarset(CalendarWEEK_OF_YEAR, i++);
calendarset(CalendarDAY_OF_WEEK, CalendarSUNDAY);
if (calendarget(CalendarYEAR) == year) {
Systemoutprintf("星期天:%tF%n", calendar);
}
calendarset(CalendarDAY_OF_WEEK, CalendarSATURDAY);
if (calendarget(CalendarYEAR) == year) {
Systemoutprintf("星期六:%tF%n", calendar);
}
}
}
以上就是关于java中如何根据某一周(比如22周)获取这一周是几月几号,星期几。有这样的函数方法吗全部的内容,包括:java中如何根据某一周(比如22周)获取这一周是几月几号,星期几。有这样的函数方法吗、java 编程 计算时间(计算本周,本月)、请教个java实现问题,我想得到当前月份的第一个周的星期一是几月几号,怎么实现。谢谢 !等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)