Java黑皮书课后题第6章:**6.24(显示当前日期和时间)程序清单2-7显示当前时间。改进这个例子,显示当前的日期和时间。程序清单6-12中的日历例子可以提供一些如何提供如何求年月日的思路
6.24(显示当前日期和时间)程序清单2-7显示当前时间。改进这个例子,显示当前的日期和时间。程序清单6-12中的日历例子可以提供一些如何提供如何求年月日的思路
- 题目
- 题目描述
- 2-7显示当前时间
- 从6-12求年月日的考虑闰年到本题:博主思路
- 代码
- 源代码
- 运行结果
题目
题目描述
6.24(显示当前日期和时间)程序清单2-7显示当前时间。改进这个例子,显示当前的日期和时间。程序清单6-12中的日历例子可以提供一些如何提供如何求年月日的思路
2-7显示当前时间
- 调用System.currentTimeMillis()方法获取1970年1月1日0时0分0秒到现在的毫秒数(如1203183086328毫秒),假设存储在变量totalMilliseconds中
long totalMilliseconds = System.currentTimeMillis(); - 那么 totalMilliseconds/1000=总秒数(假设存储在变量totalSeconds)
- totalSeconds%60得到当前秒数(如1203183068%60=8)
- totalSeconds/60得到总分钟数(假设为totalMinutes)
- totalMinutes%60得到当前分钟数
- totalMinutes/60得到总小时数totalHours
- totalHours%60得到当前小时数
从6-12求年月日的考虑闰年到本题:博主思路
有一个思路是:(这种方法耦合度很高)
- 主方法step1:在这里获取时间(总毫秒数)并调用下面第一个方法
- 主方法step2,求毫秒:求出当前毫秒数并转为总秒数
- 主方法step3,求秒:求出当前秒数并转为总分钟数
- 主方法step4、5:用相同思路求当前分钟数、时数,此时求得总天数并向下调用
- 求从1970年1月1日到今年1月1日的总天数(结合是否闰年判断),此时得到今年年份、从今年1月1日到现在的天数、今年是否为闰年
- 根据以上数据求月份数、日期数
- 单独方法,需要时调用:判断年份是否为闰年
代码
源代码
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中的日历例子可以提供一些如何提供如何求年月日的思路相关推荐
- Java黑皮书课后题第5章:*5.44(计算机体系结构:比特级的操作)一个short型值用16位比特存储。编写程序,提示用户输入一个short型的整数,然后显示这个整数的16比特形式,下面是运行示例
5.44(计算机体系结构:比特级的操作)一个short型值用16位比特存储.编写程序,提示用户输入一个short型的整数,然后显示这个整数的16比特形式 题目 题目概述 运行示例 资料与破题 原码反码 ...
- Java黑皮书课后题第4章:4.4(几何:六边形面积)六边形面积可以通过下面公式计算(s是边长) 编写程序,提示用户输入六边形的边长,然后显示它的面积
4.4(几何:六边形面积)六边形面积可以通过下面公式计算(s是边长) 编写程序,提示用户输入六边形的边长,然后显示它的面积 题目 题目概述 运行示例 破题 代码 题目 题目概述 4.4(几何:六边形面 ...
- Java黑皮书课后题第3章:*3.17(游戏:剪刀、石头、布)编写可以玩流行的剪刀-石头-布游戏的程序
*3.17(游戏:剪刀.石头.布)编写可以玩流行的剪刀-石头-布游戏的程序 题目 题目概述 运行示例 ***特别注意*** 破题 代码 题目 题目概述 *3.17(游戏:剪刀.石头.布)编写可以玩流行 ...
- Java黑皮书课后题第8章:**8.4(计算每个雇员每周工作的小时数)假定所有雇员每周工作的小时数存储在一个二维数组中。1行包含7列,记录了一个雇员7天的工作小时数。编写一个程序,按照总工时降序显示
**8.4(计算每个雇员每周工作的小时数)假定所有雇员每周工作的小时数存储在一个二维数组中.1行包含7列,记录了一个雇员7天的工作小时数.编写一个程序,按照总工时降序显示 题目 题目描述 破题 代码 ...
- Java黑皮书课后题第2章:2.9(物理:加速度)平均加速度定义为速度的变化量除以这个变化所用的时间,编写程序,提示用户输入以米/秒为单位的起始速度v0,以米/秒为单位的终止速度v1,显示平均加速度
2.9(物理:加速度)平均加速度定义为速度的变化量除以这个变化所用的时间,编写程序,提示用户输入以米/秒为单位的起始速度v0,以米/秒为单位的终止速度v1,以秒为单位的经过时间t,显示平均加速度 题目 ...
- Java黑皮书课后题第9章:9.2(Stock类)遵照9.2节中Cirlce类的例子,设计一个名为Stock的类
Java黑皮书课后题第9章:9.2(Stock类)遵照9.2节中Cirlce类的例子,设计一个名为Stock的类 题目 代码 Test2 Test2_Stock UML图 题目 代码 Test2:测试 ...
- Java黑皮书课后题第9章:9.1 (Rectangle类)遵照9.2节中Circle类的例子,设计一个名为Rectangle的类表示矩形
Java黑皮书课后题第9章:9.1 (Rectangle类)遵照9.2节中Circle类的例子,设计一个名为Rectangle的类表示矩形 题目 代码 PS Test1 Test1_Rectangle ...
- 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 ...
- Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的
Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...
- 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 ...
最新文章
- Restful与webService区别
- 地表水预测模型软件_高速列车关键构件疲劳寿命预测软件系统成功开发
- flink 异步io使用
- 使用JDK自带的jmap和jhat监控处于运行状态的Java进程
- .net中的硬盘操作(针对Windows )
- C/C++ strtod函数 - C语言零基础入门教程
- 2021年Q2小米手机销量超苹果跻身全球第二 雷军:新的里程碑
- 通过layout进行适配遇到的一点小问题及解决方案
- TMC2226-SA:静音防抖步进驱动
- 前端实现一个登录验证的滑块
- 串口485接法图_rs485接口接线方法
- 使用mysql打开什么文件格式_dbf是什么文件怎么打开
- 共阳极、共阴极数码管编码表(0~9、A~P……全亮)
- android主流手机测试,硬件测试哪家强?安卓手机跑分软件横评
- Artoolkit初级研究手札(2008.12.9)
- 【技术】DTEmpower核心功能技术揭秘(4)- MDI/MDA特征选择技术
- Data (Privacy) Regulation 数据隐私法规整理
- SIMD 单指令,多数据
- typeScript学习笔记day01——小肉包
- 谷歌浏览器(电脑端)