黑马程序员技术交流社区
标题:
输入某年某月某日,判断这一天是这一年的第几天?
[打印本页]
作者:
CHT
时间:
2015-3-24 22:28
标题:
输入某年某月某日,判断这一天是这一年的第几天?
请写清思路并注释
作者:
kkqisheng
时间:
2015-3-24 23:37
本帖最后由 kkqisheng 于 2015-3-24 23:38 编辑
基本思路:把当前月的天数,加上之前N个月的天数,就是这一年的第几天。比如3月24日,就是1月+2月的天数,再加上24天。
具体步骤如下:
1,先判断输入的年份是闰年还是平年。
2,如果是闰年,则2月是29天,如果是平年,则2月是28天。其它11个月份的天数不管是闰年还是平年都是确定的。
作者:
极光_CDY
时间:
2015-3-24 23:58
kkqisheng 发表于 2015-3-24 23:37
基本思路:把当前月的天数,加上之前N个月的天数,就是这一年的第几天。比如3月24日,就是1月+2月的天数, ...
同意,讲的和对
作者:
lmjssjj
时间:
2015-3-25 00:40
利用calendar
作者:
圣光忏悔
时间:
2015-3-25 01:11
Calendar 是一个日期类,将输入的数据解析成日期之后直接调用Calendar类的方法,简单粗暴.
作者:
勇闯☀☀黑马
时间:
2015-3-25 08:34
咋做呢?//?
作者:
longlongint
时间:
2015-3-25 11:37
package com.itheima;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
/**
*
* 第9题:编写程序,该程序启动后用户可以按“yyyy-MM-dd”的格式输入一个日期,程序计算这一天是星期几,
* 并且计算出是一年中的第几天。
*
*/
public class Test9 {
public static void main(String[] args) {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
String dateStr;
try {
DateFormat date = new SimpleDateFormat("yyyy-MM-dd");
Scanner scanner=new Scanner(System.in);
String Datestring=scanner.next();
Date in = date.parse(Datestring);
Calendar cal = Calendar.getInstance();
cal.setTime(in);
int day = cal.get(Calendar.DAY_OF_MONTH); //日
int month = cal.get(Calendar.MONTH) + 1; //月
int year = cal.get(Calendar.YEAR ); //年
//根据蔡勒(Zeller)公式 week=(y+[y/4]+[c/4]-2*c+[26(m+1)/10]+d-1)%7
/**
* c代表世纪减1 ,y带年份后两位,m代表月份(3<=m<=14),d代表日期
*/
/* int m=month;
int d=day;
if(m>=3){
int c=year/100;
int y=year%100;
int week=(y+y/4+c/4-2*c+26*(m+1)/10+d-1)%7;
System.out.println(year+"-"+month+"-"+day+"是星期"+week);}
if(m==1||m==2){
int c=(year-1)/100;
int y=(year-1)%100;
System.out.println(y+" "+c);
int week=(y+y/4+c/4-2*c+26*(m+13)/10+d-1)%7;
System.out.println(year+"-"+month+"-"+day+"是星期"+week);
}
*/
//注释的这一段是计算是星期几的,下面的就是计算是第几天的
int a[]={0,31,59,90,120,151,181,212,243,273,304,334,365};//平年每月累加天数
int b[]={0,31,60,91,121,152,182,213,244,274,305,335,366};//闰年每月累加天数
if( (year%4==0&&year%100!=0)||(year%400==0) ){//闰年
int count =a[month-1]+day;
System.out.println(year+"-"+month+"-"+day+"是"+year+"年的第"+count+"天");
}else{
int count=b[month-1]+day;
System.out.println(year+"-"+month+"-"+day+"是"+year+"年的第"+count+"天");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2