package Demo14Day_Check;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Day_Check {
/**
* 输入某年某月某日,判断这一天是这一年的第几天?
*/
/*
分析:这道例题显然用到了Date类和Calender类
* 用户输入的日期是一个字符串,要通过SimpleDateFormat类的parse()方法来将这个字符串格式化为日期对象
* 使用Date类的getTime()方法来将日期对象转换成毫秒值
* 得使用一个字符串的拼接得到当年的一月一日日期对象
* 用客户输入的日期毫秒值减去当年一月一日的毫秒值,再除以60再除以60再除以24即可得到具体过了多少天
*/
public static void main(String[] args) {
// 定一个SimpleDateFormat的格式化规则
SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd");
// 获取用户的输入
System.out.println("请输入日期:(格式为:yyyy.MM.dd)");
Scanner sc = new Scanner(System.in);
String day = sc.next();
// 对用户输入的字符串进行解析,解析为一个Date对象
Date date=null;
try {
date = sd.parse(day);
} catch (ParseException e) {
System.out.println("您输入的日期格式不对,请输入正确的日期格式,为:(yyyy.MM.dd)");
}
// 获取用户输入的年数,并在后面拼接上一月一日
String year = day.split("\\.")[0];
year = year+".01.01";
// 对一月一日也进行解析,解析为一个Date对象
Date date01 = null;
try {
date01 = sd.parse(year);
} catch (ParseException e) {
e.printStackTrace();
}
// 把获取到的两个date对象转换成毫秒值
long date_input = date.getTime();
long date_orign = date01.getTime();
// 计算毫秒值差并转换成天数
long distance = date_input-date_orign;
// 为啥要加个1嘞,是因为一月一号是第一天啊,前面的算法是把这一天当第0天算的
long checkedday = (distance/1000/60/60/24)+1;
System.out.println("您输入的这一天是今年的第"+checkedday+"天。");
}
}
输入某年某月某日,判断这一天是这一年的第几天?
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 拿到这个题目,一定不少人都有点懵逼了,不过不要紧,仔细分析一下就很简单。 我们只需要将每个月份的天数的临界值找出来...
- 输入某年某月某日,判断这一天是这一年的第几天。(格式 如:19870604) from builtins impo...