原文链接:https://www.luogu.com.cn/blog/HanksX/TJP5707 (第一次在洛谷成功提交题解)
没有人发Java题解,那么我首当其冲来给大家发一个Java的题解。
预备知识
首先我们要知道,用于操控时间的除了最常用的 Date 类,还有
方便日期运算的 Calendar 类,
拥有许多国家标准时间的 GregorianCalendar 类( Calendar 子类)。
这么一看,这道题使用起来比较方便的就是 Calendar 类。
Calendar 类中用一下这些常量表示不同的意义,Java 中的很多类其实都是采用的这种思想。
- Calendar.YEAR ——年份 。
- Calendar.MONTH ——月份 。
- Calendar.DATE ——日期 。
- Calendar.DAY_OF_MONTH ——日期,和上面的字段意义相同 。
- Calendar.HOUR ——12小时制的小时 。
- Calendar.HOUR_OF_DAY ——24小时制的小时 。
- Calendar.MINUTE ——分钟 。
- Calendar.SECOND ——秒 。
- Calendar.DAY_OF_WEEK ——星期几。
操作时间:
1 | Calendar c1 = Calendar.getInstance(); |
其他字段属性的add的意义以此类推。
这样一来,其他题解中说的那些坑也就减少了很多。比如说就不用考虑天数的问题了,Java 自己帮你处理了。
输入:
还是以往的套路,相对于其他语言来说稍微麻烦一点点的,使用 Scanner 的对象进行输入。使用 Scanner 类时需要
1 | Scanner scanner = new Scanner(System.in); |
之后再用 Calendar类 实例进行实践操作。
1 | Calendar date = Calendar.getInstance(); //创造 Calendar 类实例。 |
之后再使用 SimpleDateFormat 进行时间格式化再输出。
- yyyy:年。
- MM:月。
- dd:日 。
- hh:1~12 小时制 (1-12)。
- HH:24 小时制 (0-23)。
- mm:分。
- ss:秒。
- S:毫秒。
- E:星期几。
- D:一年中的第几天。
- F:一月中的第几个星期(会把这个月总共过的天数除以 7)。
- w:一年中的第几个星期。
- W:一月中的第几星期(会根据实际情况来算)。
- a:上下午标识。
- k:和HH差不多,表示一天 24 小时制 (1-24)。
- K:和hh差不多,表示一天 12 小时制 (0-11)。
- z:表示时区。
这里只需要输出 小时:分钟,所以格式化的格式为:HH:mm
1 | SimpleDateFormat format = new SimpleDateFormat("HH:mm"); //创造格式化 HH:mm 的 SimpleDateFormat 对象。 |
最后在输出的时候要将 Calendar 类转换为长整型输出,否则会报错。
而日期类都可以转换成长整型( long )格式,所以:
1 | System.out.println(format.format(date.getTime())); // getTime()获得长整形时间 |
完整代码
1 | import java.text.SimpleDateFormat; |
希望大家有所收获 ~φ(≧ω≦*)♪ 。