【Java】使用switch 计算一个日期是当年的第几天

计算一个日期是当年的第几天

这是去年做的一个Java题目,老师当时说这段代码里的switch用的很好。

现在工作一年了,明显感觉当时还很稚嫩,那个时候考虑问题很简单,

现在遇到问题会想更多的方面,说到这里,真的要谢谢带我的经理,

这段时间真的学到很多东西,每天都是在解决问题,每天都能学到新东西,

短短几个月时间进步了好多。


 1 import java.util.Scanner;
2
3 /**
4 * 计算一个日期是当年的第几天
5 */
6 public class CountDays {
7
8
9 public static void main(String[] args) {
10 Scanner in = new Scanner(System.in);
11 int year,month,day;
12 int dayNumber =0;
13
14 //input year month day
15 System.out.println("input year month(1-12) day(1-31): ");
16 System.out.print(" ");
17 year = in.nextInt();
18 month = in.nextInt();
19 day = in.nextInt();
20
21 //判断闰年
22 boolean flag =false;
23 if ((year%4==0 && year%100 !=0) || year%400==0)
24 {
25 flag = true;
26 }
27
28 //month
29 switch (month)
30 {
31 case 12:dayNumber +=30;
32 case 11:dayNumber +=31;
33 case 10:dayNumber +=30;
34 case 9 :dayNumber +=31;
35 case 8 :dayNumber +=31;
36 case 7 :dayNumber +=30;
37 case 6 :dayNumber +=31;
38 case 5 :dayNumber +=30;
39 case 4 :dayNumber +=31;
40 case 3 :if (flag)//闰年
41 {
42 dayNumber +=29;
43 }else
44 dayNumber +=28;
45 case 2 :dayNumber +=31;
46 case 1 :dayNumber +=day;break;
47 default:System.out.println("ERROR!");
48 }
49 System.out.println("dayNumber :"+dayNumber);
50 }
51
52 }

这段代码只能解决输入正确的值,没有校验数据是否符合常识;

还是控制台输入,这在实际项目很少遇到,大多是解析出一个日期值;

而且也没有考虑【1752年9月】这个特殊情况,这点还是跟经理学到的。

最后,请无视我蹩脚的英文。

【Java】使用switch 计算一个日期是当年的第几天,布布扣,bubuko.com

时间: 2024-10-21 01:07:59

【Java】使用switch 计算一个日期是当年的第几天的相关文章

Java中如何判断一个日期字符串是否是指定的格式

判断日期格式是否满足要求 import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date; public class Test2{public static void main(String[] args) { String date_string="201609";// 利用java中的SimpleDateFormat类,指定日期格式,注意yyyy,MM大小写// 这里的日

运用js脚本语言switch实现一个求一个日期是一年中的第几天,考虑润年

运用js脚本语言实现一个求一个日期是一年中的第几天,考虑润年 我们需要在网页中弹出框输入年月日,代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <!-- 通过switch结构实现计算一个日期是一年中的第几天,考虑润年 --> <script t

java用毫秒数做日期计算的一个踩坑记录

错误示例: Date today = new Date(); Date nextMonth = new Date(today.getTime() + 30* 1000*60*60*24); println(today); println(nextMonth); Result:  Sat Sep 30 11:18:24 CST 2017 Sun Sep 10 18:15:37 CST 2017 代码说明:上面代码的目的是计算一个月后的日期,从结果发现明显是错误的(回到上个月去了) 原因分析:30*

用Java计算某个日期100天后的日期

用Java计算日期时间,首先考虑到时间类,Java中提供的和时间日期相关的类里,有一个Calendar类,可以获取某个时间日期. 计算某个日期100天后的日期,思路如下: 1.先设定时间,例如2017年1月1日: 2.在给定日期的天数上增加100: 具体代码如下: 1 /* 2 * 1.先给定一个时间,例如2017年1月1日 3 */ 4 Calendar cld = Calendar.getInstance(); 5 cld.set(Calendar.YEAR, 2017); 6 cld.se

java计算两日期间隔小时或分钟

public static void main(String[] args) {        try {            long min = dateDiff("2014-05-27 13:30:00","2014-05-27 13:00:00","yyyy-MM-dd HH:mm:ss");            System.out.println("---------相隔分钟数: "+min);        

计算一个数组里的重复值并且删去(java)

主要思想: 假设数字里的值都为正 循环判断数组 如果与前面的数字相同则变为-1 然后记录-1的个数算出重复值 然后重新new一个减去重复值长度的新数组 和原数组判断 不为-1的全部复制进来即可 代码如下: 1 package Del_Same_Num; 2 3 public class Del_Same_Num { 4 5 static int count=0; 6 7 //计算重复值 8 public static int count_same_number(int[] a) 9 { 10 f

编程题:用函数实现,用户输入年月日,来计算出该日期为当年第几天?

#include<stdio.h> /*函数is_leap_year()的返回值是判断该年是否闰年*/ int is_leap_year(int year) { int leap; if(year%4==0&&year%100!=0||year%400==0) leap=1; else leap=0; return leap; } /*函数len_of_month()的返回值为某年year的某月month的天数*/ int len_of_month(int year,int m

Java日历模型:输入一个日期,控制台显示

1 package com.zhen.calendar; 2 3 import java.text.DateFormat; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7 import java.util.GregorianCalendar; 8 import java.util.Scanner; 9 10 /* 11 * 输入一个日期,控制台显示 12 *

java 给定一个日期期间 返回形如Mar 2015 3/20-3/31的数据

最近一个项目中有个前台对于表头要求: 给定一个日期期间返回形如 Mar 2015 3/20-3/31Apr 2015 4/1-4/30 这样的月年数据,简单的写了下代码,暂时没想到更好的办法 例如传进来的参数是 "2015-03-20"-"2016-04-08" 这样的形式 分三段处理: 第一段:起始日期的起始日期的月底 第二段:开始和结束月之间的所有月数据 第三段:结束日期的月初到结束日期 1 public List<String> loadMonth