1、通过循环控制及取余运算,在给出前后两个日期的情况下,给出前(后)一个日期的星期数,得出后(前)一个日期的星期数。比如:2011年5月1号是星期天,请计算给出2011年的12月5号是星期几。
public class Test {
public static void main(String[] args) throws ParseException {
Calendar calendar = Calendar.getInstance();
String datestr="2016-11-21";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date=sdf.parse(datestr);
calendar.setTime(date);
//一周第一天为星期天,SUNDAY = 1
int weekDay =calendar.get(Calendar.DAY_OF_WEEK);
weekDay = weekDay - 1;
if(weekDay == 0){
weekDay = 7;
}
//1,2,3,4,5,6,7
System.out.println(weekDay);
}
}
package maintest;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class csdntest
{
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
System.out.print("请输入第一个日期(格式为yyyyMMdd):");
String datestr1 = scanner.nextLine();
System.out.print("请输入星期几:");
int dateweek1 = scanner.nextInt();
scanner.nextLine();
System.out.print("请输入第二个日期(格式为yyyyMMdd):");
String datestr2 = scanner.nextLine();
//设置时间格式
DateFormat dFormat = new SimpleDateFormat("yyyyMMdd");
//将输入的两个日期字符串转换成时间格式java.util.Date
Date date1 = null,date2 = null;
try
{
date1 = dFormat.parse(datestr1);
}
catch (ParseException e)
{
e.printStackTrace();
}
try
{
date2 = dFormat.parse(datestr2);
}
catch (ParseException e)
{
e.printStackTrace();
}
//获取两个时间的毫秒时间
Long datelong1 = date1.getTime();
Long datelong2 = date2.getTime();
//第二个日期可能在第一个日期之前,做个判断
if(datelong1 > datelong2){
//第二个日期在第一个日期之前
//计算二者相差天数,由天数计算星期几
Long day = (datelong1 - datelong2)/(1000 * 60 * 60 * 24);
int dateweek2 = (int)(dateweek1 - day % 7 + 7)%7;
//0即星期日
if (dateweek2==0) dateweek2 = 7;
System.out.println(datestr2 + "是星期" + dateweek2);
}else{
//第二个日期在第一个日期之后
//计算二者相差天数,由天数计算星期几
Long day = (datelong2 - datelong1)/(1000 * 60 * 60 * 24);
int dateweek2 = (int)((day + dateweek1) % 7);
//0即星期日
if (dateweek2==0) dateweek2 = 7;
System.out.println(datestr2 + "是星期" + dateweek2);
}
scanner.close();
}
}