这个小的库是之前自己写Project的时候编的,经常会用,决定Share一下,希望对大家有用~~

先介绍一下有什么函数:

  • 根据两个Calendar计算岁数
  • 根据生日的Long值计算岁数
  • 把Calendar形式的时间转换成Long
  • 把Date形式的时间转换成Long
  • 判断输入的年月日是否合法(含闰年的相关内容)
  • 时间格式转换类——Long->“yyyy-MM-dd hh:mm:ss”
  • 匹配生日和身份证号是否相符
  • 基于身份证号,生成Long类型的生日

然后呢,直接放代码吧——————(注释应该是比较详细的了)

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;/*** 时间处理类*/
public class TimeCalculator {//工具类,不允许被实例化private TimeCalculator(){}/*** 根据两个时间计算岁数* @param nowTime* @param oldTime* @return*/public static int calculateAge(Calendar nowTime, Calendar oldTime) {int age = nowTime.get(Calendar.YEAR) - oldTime.get(Calendar.YEAR);if (nowTime.get(Calendar.MONTH) < oldTime.get(Calendar.MONTH)) {age--;} else if (nowTime.get(Calendar.MONTH) == oldTime.get(Calendar.MONTH) &&nowTime.get(Calendar.DATE) < oldTime.get(Calendar.DATE)) {age--;}return age;}/*** 根据生日的Long值计算岁数* @param birthday* @return*/public static int calculateAge(Long birthday) {Calendar nowTime = Calendar.getInstance();Calendar oldTime = Calendar.getInstance();oldTime.setTime(new Date(birthday));return calculateAge(nowTime, oldTime);}/*** 把Calendar形式的时间转换成Long* @param calendar* @return*/public static Long calculateLongTime(Calendar calendar) {return calendar.getTimeInMillis();}/*** 把Date形式的时间转换成Long* @param date* @return*/public static Long calculateLongTime(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);return calendar.getTimeInMillis();}/*** 判断是不是闰年* @param year* @return*/private static boolean judgeIsLeapYear(int year) {if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {return true;}return false;}/*** 判断闰年的日期* @param month* @param day* @return*/private static boolean judgeLeapYearDate(int month, int day) {switch (month) {case 4:case 6:case 9:case 11:if (day == 31) {return false;}case 2:if (day > 29) {return false;}}return true;}/*** 判断非闰年的日期* @param month* @param day* @return*/private static boolean judgeNonLeapYearDate(int month, int day) {switch (month) {case 4:case 6:case 9:case 11:if (day == 31) {return false;}case 2:if (day > 28) {return false;}}return true;}/*** 判断输入的年月日是否合法* 比如说,2000.02.31不合理* @param time* @return*/public static boolean judgeDate(Calendar time) {int year = time.get(Calendar.YEAR);int month = time.get(Calendar.MONTH);int day = time.get(Calendar.DATE);if (judgeIsLeapYear(year) && judgeLeapYearDate(month, day)) {return true;} else if (!judgeIsLeapYear(year) && judgeNonLeapYearDate(month, day)) {return true;}return false;}/*** 时间格式转换类* Long->"yyyy-MM-dd hh:mm:ss"* @param time* @return*/public static String transformTime(Long time){Date d = new Date(time);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");return sdf.format(d);}/*** 匹配生日和身份证号是否相符* @param birthday* @param idNumber* @return*/public static boolean matchIdAndBirthday(Long birthday, String idNumber) {//还是先排空if (idNumber == null || birthday == null) {return false;}//小心:从0开始的+左闭右开//年份在第7-10位,索引是6-9String year = idNumber.substring(6, 10);//月份在第11-12位,索引是10-11String month = idNumber.substring(10, 12);//日期在第13-14位,索引是12-13String day = idNumber.substring(12, 14);//转换时间Calendar time = Calendar.getInstance();time.setTime(new Date(birthday));//读取年月日Integer yearInt = time.get(Calendar.YEAR);Integer monthInt = time.get(Calendar.MONTH);Integer dayInt = time.get(Calendar.DATE);//转换成String,防止身份证报异常String yearStr = yearInt.toString();String monthStr = monthInt.toString();String dayStr = dayInt.toString();//年月日都要匹配if (year.equals(yearStr) && month.equals(monthStr) && day.equals(dayStr)) {return true;}return false;}/*** 基于身份证号,生成Long类型的生日* @param idNumber* @return*/public static Long generateLongBirthdayById(String idNumber) {//还是先排空if (idNumber == null) {return null;}//小心:从0开始的+左闭右开//年份在第7-10位,索引是6-9Integer year = Integer.parseInt(idNumber.substring(6, 10));//月份在第11-12位,索引是10-11Integer month = Integer.parseInt(idNumber.substring(10, 12));//日期在第13-14位,索引是12-13Integer date = Integer.parseInt(idNumber.substring(12, 14));//转换时间Calendar birthday = Calendar.getInstance();//小心月份从0起birthday.set(year, --month, date);return birthday.getTimeInMillis();}}

【Java】自编时间相关常用函数相关推荐

  1. Java中Math类常用函数总结

    Java中比较常用的几个数学公式的总结: //取整,返回小于目标函数的最大整数,如下将会返回-2 Math.floor(-1.8): //取整,返回发育目标数的最小整数 Math.ceil() //四 ...

  2. java报表工具FineReport常用函数的用法总结(数学和三角函数)

    ABS ABS(number):返回指定数字的绝对值.绝对值是指没有正负符号的数值. Number:需要求出绝对值的任意实数. 示例: ABS(-1.5)等于1.5. ABS(0)等于0. ABS(2 ...

  3. php 与时间有关的函数,php中与时间相关的常用函数有哪些

    php中与时间相关的常用函数有:date_default_timezone_set().date_create().date_diff().date_timestamp_get().strtotime ...

  4. java lambda函数_最常用的 Java 8 中的 Lambda 函数(项目中实用笔记)

    最常用的 Java 8 中的 Lambda 函数(项目中实用笔记) 简介 Java 8 中的新特性,虽然现在都出到了Java14版本,不过在日常的开发过程中,8的版本是足够使用了,再说现在的8以上的版 ...

  5. 笔试编程常用函数(Java)

    笔试编程常用函数(Java) 处理对象为String 数组相关 集合相关 (今天太晚了,以后再慢慢写) 处理对象为String 将String对象按某规则分割: String[] split(Stri ...

  6. 【Java HashMap】常用函数的使用

    常用函数 代码示例 package cn.hanquan.test;import java.util.HashMap; import java.util.Map;//HashMap的使用 public ...

  7. Java函数编码_转[收集java的常用函数代码]

    转[收集java的常用函数代码] package net.java2000.tools; /** * Title:        Java Bean 工具 * Description: * Copyr ...

  8. 常用函数(PHP/Java/MySQL)

    PHP常用函数 文件包含函数 include(); require(); 命令执行函数 exec(); system(); shell_exec(); passthru(); popen(); peo ...

  9. appium java常用函数_AppiumLibrary常用关键字

    通过上一章节,open application关键字的使用,相信大家对手机自动化充满了兴趣,那么今天这一章节,主要介绍AppiumLibrary中常用关键字的使用. 一.实用函数 关键字 含义 实例 ...

最新文章

  1. MySQL 学习笔记(18)— 索引的分类、创建、查看、删除等
  2. 基于颜色特征,形状特征和纹理特征的数字图像的检索(Digital Image Retrieval)MATLAB GUI实现(本科毕业设计)
  3. R语言ggplot2可视化在箱图中为箱图添加均值的标签及对应数值实战
  4. 大脑认知能力获突破进展!《科学》发现促进大脑发育期间的关键细胞器
  5. VBA Editor Addins -- VBE插件模板开发众筹
  6. JavaWeb-综合案例(用户信息)-学习笔记04【删除选中功能】
  7. Linux赋予普通用户root权限
  8. LeetCode 77.组合求和
  9. chemdraw怎么连接两个结构_利用神经结构搜索构建快速准确轻量级的超分辨率网络...
  10. Pulseaudio之libsndfile for android(二十)
  11. 十进制、二进制、八进制、十六进制转换
  12. Label mx条码软件导入Excel处理异常解决方法
  13. NeoKylin-Server使用docker部署跨主机redis集群
  14. log4cxx linux 使用,log4cxx在Linux下的编译使用
  15. 绿色建筑、装配式建筑工作加速推进,建筑行业招聘需求急速飞升
  16. 美国航空发动机发展经验,给中国的启示!
  17. T-Bootstrap-day04-组件、boot的定制、scss基础语法和函数
  18. 2021南昌市地区高考成绩排名查询,2021南昌中小学国编成绩排名/分数线
  19. 创业,你踩过哪些坑?
  20. C++ 提取代码中的函数

热门文章

  1. JavaScript密码复杂度
  2. 文本框内容改变触发事件
  3. IOS基础:ActionSheet(上拉菜单)的实现
  4. php background-image,css background-image属性怎么用
  5. linux杀掉进程后总是重启,Linux监控进程,进程关闭自动重启方案
  6. 边缘检测robert原理_机器视觉尺寸检测基础
  7. 多次点击android版本出现棒棒糖,android – 为前棒棒糖设备创建循环显示
  8. 树莓派网页服务器的网页留言板,树莓派利用Django搭建聊天网页服务器 —— 准备篇...
  9. php查找空白行,如何从PHP文本中删除空白行?
  10. 前1%的产品经理和前10%产品经理的区别