黑马程序员技术交流社区
标题:
分享代码:按“yyyy-MM-dd”的格式输入日期,计算这一天是星期几。
[打印本页]
作者:
sharplance
时间:
2015-10-24 12:33
标题:
分享代码:按“yyyy-MM-dd”的格式输入日期,计算这一天是星期几。
我做得一道基础测题,代码如下:
import java.util.Scanner;
/**
* 9、 编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。
*
* @author Lance
*
*/
public class Test9 {
public static void main(String[] args) {
// 输入一个日期,传递给函数并打印机计算结果
System.out.print("请按“yyyy-MM-dd”的格式输入一个日期:");
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
scanner.close();
calDate(s);
}
public static void calDate(String s) {
// 将输入的包含日期的字符串分割成三个字符串,分别包含年、月、日
String[] date = s.split("-");
// 将字符串转换为数字
int y = Integer.parseInt(date[0]);
int m = Integer.parseInt(date[1]);
int d = Integer.parseInt(date[2]);
// 调用函数打印结果
System.out.println("这是一年中的第" + dayCount(y, m, d) + "天。");
System.out.println("这一天是" + getDOW(y, m, d) + "。");
}
// 判断一个年份是否为闰年
public static boolean isLeapYear(int y) {
if (y % 400 == 0)
return true;
else if (y % 100 == 0)
return false;
else if (y % 4 == 0)
return true;
else
return false;
}
// 计算一个日期是一年中的第几天
public static int dayCount(int y, int m, int d) {
int count = 0;
// 将一年中一至十二月的每个月的天数储存到一个整数数组中
int[] dn = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// 非闰年时的天数
for (int x = 0; x < m; x++)
count = count + dn[x];
count = count + d;
// 闰年时的天数
if (isLeapYear(y) & m > 2)
return count + 1;
return count;
}
// 以1999年12月31日星期五为基准日期,计算一个日期与它之间相差的天数,并推算该日期为星期几
public static String getDOW(int y, int m, int d) {
final int YEAR = 1999;
// 定义一个字符串数组储存“星期一”到“星期日”七个字符串
String[] wd = { "星期五", "星期六", "星期日", "星期一", "星期二", "星期三", "星期四" };
int dif = 0, count = 0;
if (y > YEAR) {
// 计算所求日期与基准日期之间的闰年的个数
for (int x = 2000; x < y; x+=4) {
if (isLeapYear(x))
count++;
}
dif = 365 * (y - YEAR - 1) + count + dayCount(y, m, d);
return wd[dif % 7];
} else if (y < YEAR) {
// 计算所求日期与基准日期之间的闰年的个数
for (int x = 1996; x > y; x-=4) {
if (isLeapYear(x))
count++;
}
dif = 365 * (YEAR - y + 1) + count - dayCount(y, m, d);
return wd[wd.length - (dif % 7)];
}
return wd[0];
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2