Java中和日期直接相关的类有很多,平时最常用到的就是java.util package下面的Date和Calendar,需要用到格式的时候还会用到java.text.SimpleDateFormat
首先吐槽一下,Date和Calendar实际用起来还是有一些别扭的,刚开始用的时候不熟悉,老是分不清Date和Calendar类的具体用法和区别。
而且Calendar类的set方法来设置日期时又有一些反人类,设置月份的时候总是要脑补一下减去1,比如要设置为2018年1月6日就要设置成2018,0,6,因为在这里一月是用0来表示的:
Calendar cal = Calendar.getInstance(); cal.set(2018, 0, 8);
具体的原因可以看这里的回答:StackOverflow: Why is January month 0 in Java Calendar?
反正我是不太看得下去。。
前几天有一个简单的需求,就是根据某两个日期来计算出年龄。上网查了一下,直接抛弃了难用的Date和Calendar类,直接用java.time.LocalDate来做。话不多说直接上代码:
import java.time.LocalDate; public class TestLocalDate { public static void main(String[] args) { LocalDate date1 = LocalDate.of(2018, 1, 6); LocalDate date2 = LocalDate.of(1991, 1, 3); int age = date2.until(date1).getYears(); System.out.println("You're " + age + " years old."); } }
输出结果:
You're 27 years old.
抛弃了略显复杂令人头大的Date和Calendar类之间的互相转换调用,代码读起来也特别清晰,是不是很爽!
java.time是Java 8中新引入的一个日期时间库,下面的这些方法都是java.time包里面的。
下面来看一下这段代码是怎么来用简单清爽的方式计算时间差的:
首先,LocalDate是一个immutable class(不可变类),所以和String类一样,不需要new一个新的对象才可以使用(?)
然后是LocalDate类用于设定日期的of方法:
public static LocalDate of(int year, Month month, int dayOfMonth) public static LocalDate of(int year, int month, int dayOfMonth)
of一共有三个重载的方法,这里举出其中的两个。第一个的Month类是一个枚举类型,包含了月份的英文名称,如JANUARY, NOVEMBER等
第二个就是再正常不过的设置年月日,好消息是这里的month是从1开始的,也就是说再也不用手动减去1了!!!
下面是LocalDate类用于比较日期的until方法:
public Period until(ChronoLocalDate endDateExclusive)
这个方法返回的是一个Period类型的对象。
Period代表的是形如“2年,3个月,4天”的一段时间间隔。接下来调用的getYears方法就是属于Period类的。
最后再来看一下Period类的一些获取时间间隔的方法:
public int getYears() public int getMonths() public int getDays()
这三个方法分别用于获取时间间隔的年、月和日。对,就是这么简单。
总结
以上所述是小编给大家介绍的Java中使用LocalDate根据日期来计算年龄的实现方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
问题内容: 我在sql中有一个用户表,他们每个都有生日。我想将他们的出生日期转换为他们的年龄(仅年),例如日期:年龄:14,并将更改为年龄: 在这里,我想显示用户的日期: 问题答案: 功能:, MySQL > = 5.0.0 功能:,
本文向大家介绍jQuery实现根据生日计算年龄 星座 生肖,包括了jQuery实现根据生日计算年龄 星座 生肖的使用技巧和注意事项,需要的朋友参考一下 以上就是本文的全部内容,希望对大家有所帮助,谢谢对呐喊教程的支持!
问题内容: 我对MYSQL函数有问题,我可以使用它,而且很简单。但是我不明白如何使用它来收集表字段中的差异。例如 我有一列,我想写一个查询来做类似的事情 我的意思是我要从当前日期时间到table字段的差额,每个查询结果都是差额,即用户的年龄。 问题答案: 你的意思是这样吗? (来源)
本文向大家介绍python根据出生日期获得年龄的方法,包括了python根据出生日期获得年龄的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python根据出生日期获得年龄的方法。分享给大家供大家参考。具体如下: 这段代码可以根据用户的出生日期获得其年龄,born参数为date类型 希望本文所述对大家的Python程序设计有所帮助。
问题内容: 我正在尝试使用此功能从Swift中的BirthdayDate计算年龄: 但我得到一个错误 在目标c中,这是代码,但我不知道为什么会收到此错误: 有比这更好的正确形式吗? 问题答案: 您收到一条错误消息,因为它不是的有效值。对于“无选项”,请使用或简单地: (指定是可能的,因为它符合从继承的协议。) Swift 2更新: Swift 3更新: 假设使用Swift 3类型和:
本文向大家介绍C#实现计算年龄的简单方法汇总,包括了C#实现计算年龄的简单方法汇总的使用技巧和注意事项,需要的朋友参考一下 vs2010测试通过,主要思想是由出生日期和当前日期,两个日期计算出年龄(岁、月、天) 再简单一些: 下面我们来看看常规方法: 方法1: 方法2: 如果你将日期格式化为yyyymmdd,并且从当前日子减去生日,最后去除4个数字,就得到年龄了:) 我相信