1275: 男神的逆袭

题目

  计算两个日期相差的天数。更多内容点击标题。

分析

  下面说一下我的思路(自己写的,无扩展性):

  1. 给定一个日期,首先计算这个日期是这一年的第多少天。
  2. 给定两个日期,直接比较年份即可,闰年相差366天,平年相差365天,计算出相差的天数。
  3. 然后将两个日期在第一步中算的天数相减。
  4. 将2中和3中得到的天数相加即为结果。

  CSDN上计算日期差的博客有很多,我试了几个都没成功(可能是我写错了,大家可以尝试一下)。个人觉得我的方法比较笨,EMMM,就当练练基础吧(自我安慰QAQ),基础不太好的也可以试试。

代码

/**
* 用时:1640ms
* @author PengHao
* @version A6.1
* @date 2019年4月20日 上午10:15:06
*/ import java.util.Scanner; public class Main { private Scanner sc;
private int t, y1, m1, d1, y2, m2, d2; // 输入的数据 public Main() {
sc = new Scanner(System.in);
Date date1, date2;
t = sc.nextInt();
while ((t--) > 0) {
input();
date1 = new Date(y1, m1, d1);
date2 = new Date(y2, m2, d2);
System.out.println(Date.daysBetweenYears(date1, date2));
}
sc.close();
} /**
* 输入
*/
private void input() {
y1 = sc.nextInt();
m1 = sc.nextInt();
d1 = sc.nextInt();
y2 = sc.nextInt();
m2 = sc.nextInt();
d2 = sc.nextInt();
} public static void main(String[] args) {
new Main();
} } /**
* 日期类
*
* @author PengHao
* @version A2.0
* @date 2019年4月20日 上午10:41:43
*/
class Date {
/**
* @Field daysOfYear 当前日期是这一年的第多少天
*/
private int year, month, day, daysOfYear; public Date(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
daysOfYear = daysOfYear();
} /**
* @return 当前日期在这一年的第多少天
*/
private int daysOfYear() {
int days = day; // 当月的天数
// 月份天数表
int[] daysOfMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// 闰年加1天
if (0 == year % 4 && 0 != year % 100 || 0 == year % 400) {
daysOfMonth[1]++;
}
// 前面month-1个月的天数
for (int i = 0; i < month - 1; i++) {
days += daysOfMonth[i];
}
return days;
} /**
* @param d1 第一个日期
* @param d2 第二个日期
* @return 相差天数
*/
public static int daysBetweenYears(Date d1, Date d2) {
// 同一年,直接返回当年天数的差即可
if (d1.year == d2.year) {
return Math.abs(d1.daysOfYear - d2.daysOfYear);
} else if (d1.year > d2.year) {
// 保证d1的年份小于d2的年份
Date temp = d1;
d1 = d2;
d2 = temp;
}
int days = 0;
for (int i = d1.year; i < d2.year; i++) {
if (0 == i % 4 && 0 != i % 100 || 0 == i % 400) {
days += 366; // 闰年加366
} else {
days += 365; // 平年加365
}
}
days += d2.daysOfYear - d1.daysOfYear;
return days;
} }

写在最后:

  1. 如需转载,请于标题下注明链接形式的wowpH的博客即可;
  2. 代码原创,如需公开引用,不能删除首行注释(作者,版本号,时间等信息)。

WUSTOJ 1275: 男神的逆袭(Java)的更多相关文章

  1. Android Studio 2.0 Preview 4 的逆袭以及各种神注释

    Android Studio 2.0 Preview 4 的逆袭 一.Android Studio 2.0 Preview 4 AS2.0的改变非常大,今天刚装上,迫不及待的就来分享了,首先我们下载一 ...

  2. 二本毕业,我是如何逆袭成为BAT年薪40W的Java工程师的?

    身边的师弟师妹经常问到:非计算机专业出身,你是在2年内如何逆袭成BAT年薪40W的资深开发工程师的.其实很简单——努力! 我16年毕业于普通的二本学校,非计算机专业出身,只因为对软件开发感兴趣,所以找 ...

  3. 中小公司的Java工程师应该如何逆袭冲进BAT?

    (1)80% Java工程师都有的迷茫 这篇文章,跟大家聊一聊很多很多很多人问我的一个问题:中小公司的Java工程师应该如何规划准备,才能跳槽进入BAT这类一线互联网公司? 之所以我用了三个 “很多” ...

  4. 面渣逆袭:Java集合连环三十问

    大家好,我是老三.上期发布了一篇:面渣逆袭:HashMap追魂二十三问,反响很好! 围观群众纷纷表示 不写,是不可能不写的,只有卷才能维持了生活这样子. 当然,我写的这一系列,不是背诵版,是理解版,很 ...

  5. 面渣逆袭:Java并发六十问,快来看看你会多少道!

    大家好,我是老三,面渣逆袭 继续,这节我们来盘一盘另一个面试必问知识点--Java并发. 这篇文章有点长,四万字,图文详解六十道Java并发面试题.人已经肝麻了,大家可以点赞.收藏慢慢看!扶我起来,我 ...

  6. 面渣逆袭:Java基础五十三问,快来看看有没有你不会的!

    大家好,我是老三, 面渣逆袭 系列继续.这节我们回到梦开始的地方--Java基础,其实过了萌新阶段,面试问基础就问的不多,但是保不齐突然问一下.想一下,总不能张口高并发.闭口分布式,结果什么是面向对象 ...

  7. 小课堂Week8 例外处理设计的逆袭Part1

    小课堂Week8 例外处理设计的逆袭Part1 今天和大家讲一本书,书名是<例外处理设计的逆袭>. 为什么想讲这本书,是因为,例外处理在程序代码中到处存在,但是这些到底该如何写好,总觉得有 ...

  8. 【文学文娱】《屌丝逆袭》-出任CEO、迎娶白富美、走上人生巅峰

    本文地址:http://www.cnblogs.com/aiweixiao/p/7759790.html 原文地址:(微信公众号) 原创 2017-10-30 微信号wozhuzaisi 程序员的文娱 ...

  9. Javascript:一个屌丝的逆袭

    HTML负责结构, CSS负责展示, 而我(加上AJAX, JSON) 负责逻辑.于是前端编程三剑客形成了. http://mp.weixin.qq.com/s?__biz=MzAxOTc0NzExN ...

随机推荐

  1. Python接口自动化测试(一)什么是接口?

    接口:API(Application Programming Interface)即应用程序接口.你可以认为API是一个软件组件,或是一个Web服务与外界进行交互的接口. 1.从功能层面上 可以将接口 ...

  2. 上传本地文件到github仓库

    第一步:新建仓库 给仓库一个名字,备注 得到仓库地址: https://github.com/Lucasli2018/java-1-mybatis.git 第二步:进入要上传的文件夹,初始化上传文件夹 ...

  3. 小程序 之wx.request和wx.showModal简单封装

    一.request封装 request(url, data, successCallBack = function(data) {}, completeCallBack = function(data ...

  4. case设计及验证:入口+页面+展示

    测试个性CB问题, 功能整体结构为:入口+页面+展示 总结: 1. 产品文档为主,其次是服务端接口返回.数据结构及字段值确认.结合实际场景检查是否有遗漏或不合理. 2. 以字段为维度,每个字段的检查点 ...

  5. idea备忘

    1.idea 最近打开的文件个数 File->Settings->Editor->General->Editor Tabs->Tab Closing Policy-> ...

  6. yum安装PostgreSQL 在6和7

    一.安装PostgreSQL 复制代码// 安装EPEL源# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.n ...

  7. osg fbx遍历模型节点名称

    ; k<sg->getNumChildren(); k++) { //转换编 std::string name = vcfbx1.w2m1(vcfbx1.m2w1(sg->getCh ...

  8. webpack概述——资源、样式、图片的打包工具

    官方地址:https://www.webpackjs.com/ Concepts At its core, webpack is a static module bundler for modern ...

  9. MHA集群搭建

    (1).简介 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开 ...

  10. python学习:python的常用功能示例2

    1. python 写入txt with open("douban.txt","w") as f: f.write("这是个测试!") fi ...