方式一:

/*** 某年某月某日是这一年的第几天* * @author zql**/
public class Test {public static void main(String[] args) {Test t = new Test();System.out.println("这一天是这一年的第" + t.getDaySub(2019, 3, 12) + "天");}/*** * @param year 年* @param month 月* @param date 日* @return*/public int getDaySub(int year, int month, int date) {int totalDay = 0;for (int i = 1; i <= month; i++) {if (i == month) {totalDay += date;} else {totalDay += getThisYearMonthDays(year, i);}}return totalDay;}/*** 获取某年某月的天数* * @param year* @param month* @return*/public int getThisYearMonthDays(int year, int month) {if (month == 2) {return isLeapYear(year) ? 29 : 28;} else if (month == 4 || month == 6 || month == 9 || month == 11) {return 30;} else {return 31;}}/*** 判断这一年是否是闰年* * @param year 年份* @return*/public boolean isLeapYear(int year) {return (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0) ? true : false;}
}

方式二:

import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;/*** jdk 8* * @author zql**/
public class Test2 {public static void main(String[] args) {Test2 t = new Test2();System.out.println("这一天是这一年的第" + t.getDaySub(2019, 3, 12) + "天");}/*** @param year 年* @param month 月* @param date 日* @return*/public Integer getDaySub(int year, int month, int date) {String m = month < 10 ? "0" + month : String.valueOf(month);String d = date < 10 ? "0" + date : String.valueOf(date);String endDate = year + "-" + m + "-" + d;DateTimeFormatter DATE = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");// 格式为yyyy-MM-dd的时间字符串转为秒,默认时区为东8区long start = LocalDateTime.parse(year + "-01-01 00:00:00", DATE).toEpochSecond(ZoneOffset.of("+8"));long end = LocalDateTime.parse(endDate + " 00:00:00", DATE).toEpochSecond(ZoneOffset.of("+8"));try {int days = (int) (end - start) / (24 * 60 * 60);return days + 1;} catch (Exception e) {e.printStackTrace();return null;}}
}

方式三:

import java.text.SimpleDateFormat;/*** jdk 8 之前* * @author zql**/
public class Test3 {public static void main(String[] args) {Test3 t = new Test3();System.out.println("这一天是这一年的第" + t.getDaySub(2019, 3, 12) + "天");}/*** @param year 年* @param month 月* @param date 日* @return*/public Integer getDaySub(int year, int month, int date) {SimpleDateFormat YEAR_MONTH_DAY = new SimpleDateFormat("yyyy-MM-dd");String start = year + "-01-01";String m = month < 10 ? "0" + month : String.valueOf(month);String d = date < 10 ? "0" + date : String.valueOf(date);String end = year + "-" + m + "-" + d;try {int days = (int) (((YEAR_MONTH_DAY.parse(end).getTime() - YEAR_MONTH_DAY.parse(start).getTime()) / (1000 * 60 * 60 * 24)));return days + 1;} catch (Exception e) {e.printStackTrace();return null;}}
}

方式四:

import java.util.Calendar;/*** * @author zql**/
public class Test4 {public static void main(String[] args) {Test4 t = new Test4();System.out.println("这一天是这一年的第" + t.getDaySub(2019, 3, 12) + "天");}/*** @param year 年* @param month 月* @param date 日* @return*/public int getDaySub(int year, int month, int date) {Calendar c = Calendar.getInstance();c.set(year, 0, 0, 0, 0, 0);long sTime = c.getTimeInMillis();c.set(year, month - 1, date, 0, 0, 0);long dTime = c.getTimeInMillis();return (int)((dTime - sTime) / (1000 * 60 * 60 * 24));}
}

java算法编程题:某年某月某日是这一年的第几天相关推荐

  1. java算法编程题_【java题目】考验你编程能力和算法的时候到了

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这是我写的,但是算法很复杂,唉,求高手啊 package com.sky.woodwall; import java.util.ArrayList; im ...

  2. java基础编程题day30--每日两题

    目录 最难的问题__牛客网 因子个数__牛客网 链接:最难的问题__牛客网 来源:牛客网 NowCoder生活在充满危险和阴谋的年代.为了生存,他首次发明了密码,用于军队的消息传递.假设你是军团中的一 ...

  3. java算法编程题:士兵列队问题

    题目:300名士兵分别编号为1-300,按顺序排成一排,长官下令:"双数士兵出列!",剩下的士兵重新按原序编号.长官下令:"双数士兵出列!",如此进行下去直到最 ...

  4. 零基础学Java语言---编程题

    零基础学Java语言-编程题 注意:没有上机实际测过,代码仅供参考 1.温度转换 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示 ...

  5. system verilog编程题_拼多多2020校招部分算法编程题合集

    拼多多2020校招部分算法编程题2道,多多的魔术盒子和多多的排列函数 其实根据他的匹配职位我们可以看到,这5道题的难度还是并不高,只是作为一个初步筛选,我这边选择了前两道跟大家分享 [编程题一] 多多 ...

  6. C算法编程题(四)上三角

    前言 上一篇<C算法编程题(三)画表格> 上几篇说的都是根据要求输出一些字符.图案等,今天就再说一个"上三角",有点类似于第二篇说的正螺旋,输出的字符少了,但是逻辑稍微 ...

  7. 【面试锦囊】14种模式搞定面试算法编程题(1-7)

    面试锦囊之知识整理系列 面试锦囊系列一直有收到大家的反馈,包括后台内推成功的消息.朋友的同事从创业小公司成功跳到huawei等等,非常高兴小破号的这些整理分享能够真正地帮助到大家,以后也会继续.为了更 ...

  8. 【面试锦囊】14种模式搞定面试算法编程题(8-14)

    面试锦囊之知识整理系列 面试锦囊系列一直有收到大家的反馈,包括后台内推成功的消息.朋友的同事从创业小公司成功跳到huawei等等,非常高兴小破号的这些整理分享能够真正地帮助到大家,以后也会继续.为了更 ...

  9. C算法编程题(二)正螺旋

    前言 上一篇<C算法编程题(一)扑克牌发牌> 写东西前总是喜欢吐槽一些东西,还是多啰嗦几句吧,早上看了一篇博文<谈谈外企涨工资那些事>,里面楼主讲到外企公司包含的五类人,其实不 ...

  10. C算法编程题(七)购物

    前言 上一篇<C算法编程题(六)串的处理> 有些朋友看过我写的这个算法编程题系列,都说你写的不是什么算法,也不是什么C++,大家也给我提出用一些C++特性去实现问题更方便些,在这里谢谢大家 ...

最新文章

  1. 300 Longest Increasing Subsequence
  2. android如何暂停倒计时,在Android中暂停和恢复倒计时器和进度条?
  3. 仁慈型dea matlab程序,数据包络分析(DEA)方法..docx
  4. 「LibreOJ Round #6」花火
  5. 永不休眠怎么设置_电脑休眠后应该怎样唤醒?
  6. 7-31总结----javascript
  7. 软件系统命名简称大全
  8. mvc:annotation-driven注解的作用
  9. 麻木的IT公民:293个公司人压力和心理调查
  10. 淘宝 生成 图片二维码分享
  11. 达梦数据库出现故障无法启动解决方法-通过归档日志修复数据库
  12. word中 数字或者字母间距 突然变大
  13. 会计记账公式、六要素、记账流程
  14. 爬虫系列 | 1、什么是爬虫,玩爬虫的正确姿势有哪些
  15. 20201125今日学习
  16. 19种分布式系统设计模式
  17. 原生小程序使用二维码扫码调用接口
  18. 蓝桥杯 算法提高 我们的征途是星辰大海
  19. 进军亚纳米时代!FinFET之后,摩尔定律如何延续
  20. 时间序列分解法(Time-series Decomposition)

热门文章

  1. python 马赛克拼图_用Python和OpenCV实现照片马赛克拼图(蒙太奇照片)
  2. ADSL上网常见故障解答
  3. 冯.诺依曼计算机结构要点
  4. Relatively Prime Graph(贪心+注意数据范围)
  5. 信息学奥赛一本通|1196:踩方格
  6. 一句话,读懂首席架构师、CTO和技术总监的区别
  7. 刷百度权重那些不为人知的事情
  8. 计算机职业规划论文参考文献,职业生涯规划的参考文献
  9. ansys怎么删除线段_如何彻底删除ansys
  10. win7 手把手教你将win7背景色修改为浅绿保护色【包括资源管理器的背景】