Java 给定一个c根据日期计算星期几,求对应的周数,星期几等

java程序(9)
说明:这篇博客是和之前的“用户输入一个日期,计算时星期几,并计算时一年中的某一天,使用正则表达式判断”,实现的的功能相同,但是这次使用的是,自定义方式来判断。说实话,之前用正则表达式那种方式的确减少了很多代码,但是那个正则表达式理解起来很痛苦,这次这个代码虽然多,但是相对好理解一点。
题目:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,并且计算出是一年中的第几天。
import java.util.C
import java.util.S
public class Test99 {
public static void main(String[] args) {
// 题目:输入某年某月某日,判断这一天是这一年的第几天?
public static void date() {
//定义一个数组,用于存放星期值
String[] week = {&星期日&,&星期一&,&星期二&,&星期三&,&星期四&,&星期五&,&星期六&};
// 定义一个变量,用于接收用户输入的时间
// 创建一个Scanner对象
Scanner sc = new Scanner(System.in);
System.out.println(&请输入日期:格式:yyyy-MM-dd&);
// 进入死循环,接收输入的年月日,当输入的日期合法时,结束输入
while (true) {
// 接收用户输入
String str = sc.nextLine();
//测试日期
String str = &&;
// 判断输入的格式是不是合法,采用正则表达式判断。
String regex = &[0-9]{4}-[0-1][0-9]-[0-3][0-9]&;
//只能确定判定输入的格式是不是正确
if (!str.matches(regex)) {
System.out.println(&输入格式不合法,请重新输入&);
//如果当前格式输入错误,提示重新输入
// 定义一个数组,用于接收拆分的字符串
String[] s = str.split(&-&);
//判断输入的数据是否合法,如果不合法将重新输入,如果合法就继续下面的计算
if(!judgeDate(Integer.parseInt(s[0]),Integer.parseInt(s[1])-1,Integer.parseInt(s[2]))){
System.out.println(&输入数据不合法,请重新输入&);
//定义一个类,获取时间
Calendar c = Calendar.getInstance();
//设置时间为输入时间,s[0]存放年,s[1]存放月,s[2]存放日。
//由于输入的月份是按照我们理解的日期计算【1-12】月,而国外采用的是【0-11】月,所以需要减一
c.set(Integer.parseInt(s[0]), Integer.parseInt(s[1])-1,
Integer.parseInt(s[2]));
//打印结果,获取时间
System.out.println(&今天是&+s[0]+&的第& + c.get(Calendar.DAY_OF_YEAR) +
&天\t&+week[c.get(Calendar.DAY_OF_WEEK)-1]);
* 功能:判断输入的日期是不是合法,
* 输入参数:接收年月日,int year,byte month,byte day
* 返回值:返回boolean类型数据,当输入的值合法时,返回true,否则false
public static boolean judgeDate(int year,int month,int day){
Calendar c = Calendar.getInstance();
//先判断年份和月份是否合法
if(year&1900 && (month&=0 && month&12)){
//判断是不是月小
if(month == 3 || month == 5 || month == 8 || month == 10){
如果月小的话,日期的时间限制为1-31
if(day&0 && day&31){
满足要求,将年月日到设置为指定的日期(这里为当前输入的日期),并且结束输入
c.set(year, month, day);
System.out.println(&日期输入错误1!&);
//执行这句,则说明输入的年、月都正确,但是输入的日期不合法。
//判断是不是月大
else if(month == 0 || month == 2 || month == 4 || month == 6 || month == 7 || month == 9 || month == 11){
如果月大的话,日期的时间限制为1-30
if(day&0 && day&32){
满足要求,将年月日到设置为指定的日期(这里为当前输入的日期),并且结束输入
c.set(year, month, day);
System.out.println(&日期输入错误2!&);
//执行这句,则说明输入的年、月都正确,但是输入的日期不合法。
判断本年是不是闰年,根据是不是闰年来确定day的值是不是合法
else if(month == 1){
设置当前的时间为三月一日,
c.set(year, month+1,1);
将时间往前推一天,就可以获取本年二月的最大值
c.add(Calendar.DAY_OF_MONTH, -1);
System.out.println(c.get(Calendar.DAY_OF_MONTH));
if(day&0 && day&c.get(Calendar.DAY_OF_MONTH)){
c.set(year, month, day);
System.out.println(&日期输入错误3!&);
//执行这句,则说明输入的年、月都正确,但是输入的日期不合法。
System.out.println(&日期输入错误4!&);
//执行这句,则说明输入的年、月输入错误。
之前使用正则表达式实现这个功能的:地址:http://blog.csdn.net/lmh820822/article/details/
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6283次
排名:千里之外
原创:13篇
(1)(2)(1)(9)js获取指定日期周数以及星期几的小例子
投稿:whsnow
字体:[ ] 类型:转载 时间:
根据某年某周获取一周的日期。如开始日期规定为星期四到下一周的星期五为一周,需要的朋友可以参考下
JS获取日期时遇到如下需求,根据某年某周获取一周的日期。如开始日期规定为星期四到下一周的星期五为一周。
代码如下:
function getNowFormatDate(theDate)
var day = theD
var Year = 0;
var Month = 0;
var Day = 0;
var CurrentDate = "";
// 初始化时间
Year= day.getFullYear();// ie火狐下都可以
Month= day.getMonth()+1;
Day = day.getDate();
CurrentDate += Year + "-";
if (Month &= 10 )
CurrentDate += Month + "-";
CurrentDate += "0" + Month + "-";
if (Day &= 10 )
CurrentDate += D
CurrentDate += "0" + D
return CurrentD
function isInOneYear(_year,_week){
if(_year == null || _year == '' || _week == null || _week == ''){
var theYear = getXDate(_year,_week,4).getFullYear();
if(theYear != _year){
// 获取日期范围显示
function getDateRange(_year,_week){
var beginD
if(_year == null || _year == '' || _week == null || _week == ''){
return "";
beginDate = getXDate(_year,_week,4);
endDate = getXDate(_year,(_week - 0 + 1),5);
return getNowFormatDate(beginDate) + " 至 "+ getNowFormatDate(endDate);
// 这个方法将取得某年(year)第几周(weeks)的星期几(weekDay)的日期
function getXDate(year,weeks,weekDay){
// 用指定的年构造一个日期对象,并将日期设置成这个年的1月1日
// 因为计算机中的月份是从0开始的,所以有如下的构造方法
var date = new Date(year,"0","1");
// 取得这个日期对象 date 的长整形时间 time
var time = date.getTime();
// 将这个长整形时间加上第N周的时间偏移
// 因为第一周就是当前周,所以有:weeks-1,以此类推
// 7*24*3600000 是一星期的时间毫秒数,(JS中的日期精确到毫秒)
time+=(weeks-1)*7*24*3600000;
// 为日期对象 date 重新设置成时间 time
date.setTime(time);
return getNextDate(date,weekDay);
// 这个方法将取得 某日期(nowDate) 所在周的星期几(weekDay)的日期
function getNextDate(nowDate,weekDay){
// 0是星期日,1是星期一,...
weekDay%=7;
var day = nowDate.getDay();
var time = nowDate.getTime();
var sub = weekDay-
if(sub &= 0){
time+=sub*24*3600000;
nowDate.setTime(time);
return nowD
如获取2016年第一周日期,从周四开始算。则第一周的日期范围为 至
在提供一段调用的参考代码:
//日期处理
function dateRange(){
var _year = $("#_year").val();
var _week = $("#_week").val();
if(isInOneYear(_year,_week)){
var showDate = getDateRange(_year,_week);
$("#_dateRange_import").html(showDate);
alert(_year+"年无"+_week+"周,请重新选择");
$("#_week").val("");
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 通过日期计算星期几 的文章

 

随机推荐