6.24(显示当前日期和时间)程序清单2-7显示当前时间。改进这个例子,显示当前的日期和时间。程序清单6-12中的日历例子可以提供一些如何提供如何求年月日的思路

  • 题目
    • 题目描述
    • 2-7显示当前时间
    • 从6-12求年月日的考虑闰年到本题:博主思路
  • 代码
    • 源代码
    • 运行结果

题目

题目描述

6.24(显示当前日期和时间)程序清单2-7显示当前时间。改进这个例子,显示当前的日期和时间。程序清单6-12中的日历例子可以提供一些如何提供如何求年月日的思路

2-7显示当前时间

  1. 调用System.currentTimeMillis()方法获取1970年1月1日0时0分0秒到现在的毫秒数(如1203183086328毫秒),假设存储在变量totalMilliseconds中
    long totalMilliseconds = System.currentTimeMillis();
  2. 那么 totalMilliseconds/1000=总秒数(假设存储在变量totalSeconds)
  3. totalSeconds%60得到当前秒数(如1203183068%60=8)
  4. totalSeconds/60得到总分钟数(假设为totalMinutes)
  5. totalMinutes%60得到当前分钟数
  6. totalMinutes/60得到总小时数totalHours
  7. totalHours%60得到当前小时数

从6-12求年月日的考虑闰年到本题:博主思路

有一个思路是:(这种方法耦合度很高)

  1. 主方法step1:在这里获取时间(总毫秒数)并调用下面第一个方法
  2. 主方法step2,求毫秒:求出当前毫秒数并转为总秒数
  3. 主方法step3,求秒:求出当前秒数并转为总分钟数
  4. 主方法step4、5:用相同思路求当前分钟数、时数,此时求得总天数并向下调用
  5. 求从1970年1月1日到今年1月1日的总天数(结合是否闰年判断),此时得到今年年份、从今年1月1日到现在的天数、今年是否为闰年
  6. 根据以上数据求月份数、日期数
  7. 单独方法,需要时调用:判断年份是否为闰年

代码

源代码

public class Test6_24_2 {public static void main(String[] args) {// 1. 主方法:在这里获取时间(总毫秒数)(获取格林时间)long totalMilliseconds = System.currentTimeMillis();// 2. 求毫秒:求出当前毫秒数并转为总秒数,当前毫秒数currentMillisecondslong currentMilliseconds = totalMilliseconds % 1000;long totalSeconds = totalMilliseconds / 1000;// 3. 求秒:求出当前秒数并转为总分钟数,当前秒数cureentSecondslong currentSeconds = totalSeconds % 60;long totalMinutes = totalSeconds / 60;// 4. 用相同思路求当前分钟数(currentMinutes)、时数(currentHours)long currentMinutes = totalMinutes % 60;long totalHours = totalMinutes / 60;long currentHours = totalHours % 24;long totalDays = totalHours / 24;// 5. 计算今年是哪一年(年份数:years)long leapYearsDay = 366, normalYearsDay = 365;int years = 1970;for ( ; totalDays >= 0; years++){if (isLeapYear(years))totalDays -= leapYearsDay;elsetotalDays -= normalYearsDay;}int currentYears = years - 1;   // 这里是今年的年份/** 此时totalDays+今年天数=今年1月1日到现在的天数*/boolean bool = isLeapYear(currentYears);if (bool){totalDays += 367;}else {totalDays += 366;}// 6. 求月份:先不考虑是否闰年计算月份数,判断是否闰年,根据情况加减totalDaysint currentMonths = 0;if (totalDays <= 31) {currentMonths = 1;}else if (totalDays <= 59) {currentMonths = 2;totalDays -= 31;}else if (totalDays <= 90) {currentMonths = 3;totalDays -= 59;}else if (totalDays <= 120){currentMonths = 4;totalDays -= 90;}else if (totalDays <= 151){currentMonths = 5;totalDays -= 120;}else if (totalDays <= 181){currentMonths = 6;totalDays -= 151;}else if (totalDays <= 212){currentMonths = 7;totalDays -= 181;}else if (totalDays <= 243){currentMonths = 8;totalDays -= 212;}else if (totalDays <= 273){currentMonths = 9;totalDays -= 243;}else if (totalDays <= 304){currentMonths = 10;totalDays -= 273;}else if (totalDays <= 334){currentMonths = 11;totalDays -= 304;}else{currentMonths = 12;totalDays -= 334;}if (bool && currentMonths > 1)totalDays -= 1;/** 此时totalDays就是从本月1号到今天的天数,currentMonths即为月份*/System.out.println("当前时间是" + currentYears + "/" + currentMonths + "/" +totalDays + " " + currentHours + ":" + currentMinutes + ":" +currentSeconds + " " + currentMilliseconds);}// isLeapYear判断传入的int型年份是否为闰年public static boolean isLeapYear(int year){return (year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0);}
}

运行结果

当前时间是2021/8/25 9:32:55 17

Java黑皮书课后题第6章:**6.24(显示当前日期和时间)程序清单2-7显示当前时间。改进这个例子,显示当前的日期和时间。程序清单6-12中的日历例子可以提供一些如何提供如何求年月日的思路相关推荐

  1. Java黑皮书课后题第5章:*5.44(计算机体系结构:比特级的操作)一个short型值用16位比特存储。编写程序,提示用户输入一个short型的整数,然后显示这个整数的16比特形式,下面是运行示例

    5.44(计算机体系结构:比特级的操作)一个short型值用16位比特存储.编写程序,提示用户输入一个short型的整数,然后显示这个整数的16比特形式 题目 题目概述 运行示例 资料与破题 原码反码 ...

  2. Java黑皮书课后题第4章:4.4(几何:六边形面积)六边形面积可以通过下面公式计算(s是边长) 编写程序,提示用户输入六边形的边长,然后显示它的面积

    4.4(几何:六边形面积)六边形面积可以通过下面公式计算(s是边长) 编写程序,提示用户输入六边形的边长,然后显示它的面积 题目 题目概述 运行示例 破题 代码 题目 题目概述 4.4(几何:六边形面 ...

  3. Java黑皮书课后题第3章:*3.17(游戏:剪刀、石头、布)编写可以玩流行的剪刀-石头-布游戏的程序

    *3.17(游戏:剪刀.石头.布)编写可以玩流行的剪刀-石头-布游戏的程序 题目 题目概述 运行示例 ***特别注意*** 破题 代码 题目 题目概述 *3.17(游戏:剪刀.石头.布)编写可以玩流行 ...

  4. Java黑皮书课后题第8章:**8.4(计算每个雇员每周工作的小时数)假定所有雇员每周工作的小时数存储在一个二维数组中。1行包含7列,记录了一个雇员7天的工作小时数。编写一个程序,按照总工时降序显示

    **8.4(计算每个雇员每周工作的小时数)假定所有雇员每周工作的小时数存储在一个二维数组中.1行包含7列,记录了一个雇员7天的工作小时数.编写一个程序,按照总工时降序显示 题目 题目描述 破题 代码 ...

  5. Java黑皮书课后题第2章:2.9(物理:加速度)平均加速度定义为速度的变化量除以这个变化所用的时间,编写程序,提示用户输入以米/秒为单位的起始速度v0,以米/秒为单位的终止速度v1,显示平均加速度

    2.9(物理:加速度)平均加速度定义为速度的变化量除以这个变化所用的时间,编写程序,提示用户输入以米/秒为单位的起始速度v0,以米/秒为单位的终止速度v1,以秒为单位的经过时间t,显示平均加速度 题目 ...

  6. Java黑皮书课后题第9章:9.2(Stock类)遵照9.2节中Cirlce类的例子,设计一个名为Stock的类

    Java黑皮书课后题第9章:9.2(Stock类)遵照9.2节中Cirlce类的例子,设计一个名为Stock的类 题目 代码 Test2 Test2_Stock UML图 题目 代码 Test2:测试 ...

  7. Java黑皮书课后题第9章:9.1 (Rectangle类)遵照9.2节中Circle类的例子,设计一个名为Rectangle的类表示矩形

    Java黑皮书课后题第9章:9.1 (Rectangle类)遵照9.2节中Circle类的例子,设计一个名为Rectangle的类表示矩形 题目 代码 PS Test1 Test1_Rectangle ...

  8. Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类

    Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类) 题目 缺陷 UML图 代码 Test02_MyDate.java:用于参考的My ...

  9. Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的

    Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...

  10. Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字

    Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字 题目 代码 结果 题目 都在上面 代码 import java.math.B ...

最新文章

  1. Restful与webService区别
  2. 地表水预测模型软件_高速列车关键构件疲劳寿命预测软件系统成功开发
  3. flink 异步io使用
  4. 使用JDK自带的jmap和jhat监控处于运行状态的Java进程
  5. .net中的硬盘操作(针对Windows )
  6. C/C++ strtod函数 - C语言零基础入门教程
  7. 2021年Q2小米手机销量超苹果跻身全球第二 雷军:新的里程碑
  8. 通过layout进行适配遇到的一点小问题及解决方案
  9. TMC2226-SA:静音防抖步进驱动
  10. 前端实现一个登录验证的滑块
  11. 串口485接法图_rs485接口接线方法
  12. 使用mysql打开什么文件格式_dbf是什么文件怎么打开
  13. 共阳极、共阴极数码管编码表(0~9、A~P……全亮)
  14. android主流手机测试,硬件测试哪家强?安卓手机跑分软件横评
  15. Artoolkit初级研究手札(2008.12.9)
  16. 【技术】DTEmpower核心功能技术揭秘(4)- MDI/MDA特征选择技术
  17. Data (Privacy) Regulation 数据隐私法规整理
  18. SIMD 单指令,多数据
  19. typeScript学习笔记day01——小肉包
  20. 谷歌浏览器(电脑端)

热门文章

  1. app启动页数秒加载 代码_干货 | App 自动化测试痛点(弹框及首页启动加载完成判断处理)
  2. 试题 历届试题 翻硬币(贪心)
  3. set的使用03(较多的操作函数)
  4. 技术与商业到底啥关系?我们从业务角度聊一聊
  5. 用canvas整个打飞机游戏
  6. Linux从零开始(二、基础命令(续二)解压 tar)
  7. Spring中bean的作用域
  8. 如何将加密PDF转换成Word文档
  9. onselectstart 、onselect区别
  10. 洛谷 P1202 模拟 - 黑色星期五 Friday the Thirteenth