构建表示不同日期格式的静态常量

public static final String ISO_DATE_FORMAT = "yyyyMMdd";
public static final String ISO_EXPANDED_DATE_FORMAT = "yyyy-MM-dd";
public static String DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static String DATE_PATTERN = "yyyyMMddHHmmss";
//其他
private static Random random = new Random();
private static final int ID_BYTES = 10;

生成一个23位的id值 使用当前系统毫秒数字符串和一个十位的随机数

public synchronized static String generateId() {StringBuffer result = new StringBuffer();result = result.append(System.currentTimeMillis());for (int i = 0; i < ID_BYTES; i++) {result = result.append(random.nextInt(10));}return result.toString();
}

Math.round(JD + 0.5f)表示向上取整

Math.round(JD + 0.5f) - 0.5f;表示取一个半整数值

protected static final float normalizedJulian(float JD) {float f = Math.round(JD + 0.5f) - 0.5f;return f;
}

通过一定的逻辑把一个浮点数转化为年月日 然后通过给Calendar中的年月日赋值,最后Calendar.getTime()返回Date类型日期

public static final Date toDate(float JD) {/* To convert a Julian Day Number to a Gregorian date, assume that it is for 0 hours, Greenwich time (so* that it ends in 0.5). Do the following calculations, again dropping the fractional part of all* multiplicatons and divisions. Note: This method will not give dates accurately on the* Gregorian Proleptic Calendar, i.e., the calendar you get by extending the Gregorian* calendar backwards to years earlier than 1582. using the Gregorian leap year* rules. In particular, the method fails if Y<400. */float Z = (normalizedJulian(JD)) + 0.5f;float W = (int) ((Z - 1867216.25f) / 36524.25f);float X = (int) (W / 4f);float A = Z + 1 + W - X;float B = A + 1524;float C = (int) ((B - 122.1) / 365.25);float D = (int) (365.25f * C);float E = (int) ((B - D) / 30.6001);float F = (int) (30.6001f * E);int day = (int) (B - D - F);int month = (int) (E - 1);if (month > 12) {month = month - 12;}int year = (int) (C - 4715); //(if Month is January or February) or C-4716 (otherwise)if (month > 2) {year--;}Calendar c = Calendar.getInstance();c.set(Calendar.YEAR, year);c.set(Calendar.MONTH, month - 1); // damn 0 offsetsc.set(Calendar.DATE, day);return c.getTime();}
public static final int daysBetween(Date early, Date late) {Calendar c1 = Calendar.getInstance();Calendar c2 = Calendar.getInstance();c1.setTime(early);c2.setTime(late);return daysBetween(c1, c2);
}

--待续

DateUtils解析相关推荐

  1. commons-lang3:DateUtils

    2019独角兽企业重金招聘Python工程师标准>>> /**      * 以秒为标准时间的毫秒数      */     public static final long MIL ...

  2. Java 表达式解析(非原创)

    因项目需要,在网上找来一套表达式解析方法,由于原来的方法太过于零散,不利于移植,现在整理在同一文件内: 文件中包含5个内部类,源码如下: 1 import java.util.ArrayList; 2 ...

  3. poi的excel解析工具类

    2019独角兽企业重金招聘Python工程师标准>>> import org.apache.commons.lang.StringUtils; import org.apache.c ...

  4. android天气预报----google开源天气API,SAX解析

    最近项目不太忙,就抽空看了看天气预报,做个玩玩,上图: 转载请注明出处: http://blog.csdn.net/dany1202/archive/2011/05/17/6426064.aspx 1 ...

  5. 深入Android应用开发_核心技术解析与最佳实践

    感谢作者的奉献,以下是我读了这本书的笔记,也只是摘录对我有用的片段,分享之: 一.深入解析android核心组件和应用框架 1.listView下空列表的显示问题.重写适配器的isEmpty(),或H ...

  6. Java 使用Socket 实现基于DTU的TCP服务器 + 数据解析 + 心跳检测

    在物联网时代,DTU的运用非常广泛 :环境监测中通过DTU将传感器的数据远程传输至云服务器也是比较常见的用法.下面我来分享一下我的项目经验 1.物理连接拓扑 2.服务器后台流程 3.代码 设备TCP服 ...

  7. Jxl解析Excel表格数据

    /** * @file ExcelUtils.java * * @brief ExcelUtils.java相关函数 * * * @author * - Dec 28, 2011 xxxx * * @ ...

  8. Certificate 超详细解析cer证书(序列号,颁发者,公钥等)

    我们一般说的证书就是数字证书:数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,人们可以在网上用它来识别对方的身份 一般有两种:PFX证书.CER证书 PFX证书: 由Public Key ...

  9. java 对Outlook保存的.Msg格式文件解析

    文件控件上传.msg格式文件,达到预览效果 前端控件代码就介绍了,重点是解析文件.我是用了outlook-message-parser来解析文件. 代码展示 首先是maven依赖 <depend ...

  10. DateUtils 工具类:获取指定月份第一天时间,最后一天时间

    获取指定月份第一天时间 getMinDateMonth ,最后一天时间 getMaxDateMonth ,将时间区间按照月份分组,拆分多个片段 getDateSplitMonth 指定月份的下个月 g ...

最新文章

  1. 一对一直播app源码功能操详解方案分享
  2. java如何构造ajax回调参数,jQuery实现ajax回调函数带入参数的方法示例
  3. swift 去json空格_我尽力了,你们快些拿去吧!
  4. MySQL联合索引原理_复合索引_组合索引_多列索引
  5. Van-UI发送验证码demo -效果篇
  6. 将文件或视频隐藏在图片里
  7. 用于图片切割,图片压缩,缩略图的生成(转到一个好东西)
  8. Power BI for Office 365 概览
  9. 拓端tecdat|R语言实现MCMC中的Metropolis–Hastings算法与吉布斯采样
  10. c++ bitset类用法
  11. dwf怎么合成一个_PC-3000 Data Extractor如何将一系列Bin文件合并为一个镜像文件
  12. Spring AOP中的责任链设计模式
  13. mysql中查询没有选修某两门课的_mysql-学生表32题
  14. 鸿蒙OS原子化服务卡片原理和架构分析
  15. java 耦合解耦_程序的耦合和解耦
  16. python Stark 组件
  17. 蓝牙技术|防丢背包获奖,Find My产品受追捧
  18. MFC 下拉列表框的设置
  19. 解决问题:maven打包报错-There are test failures
  20. python 基础100题练习

热门文章

  1. Matlab PolySpace安装破解
  2. python urlretrieve下载进度_python《文件下载进度显示》 urllib.request.urlretrieve(self.__path,self.__name,jindu)...
  3. python GUI打开文本文件代码
  4. django python版本选择
  5. 二、信号分解 —> 变分模态分解(VMD)学习笔记
  6. turbo c是什么?
  7. 10款Mac上程序员装机必备的开发工具推荐和下载
  8. 安装qt qmake assistant 错误:could not find a Qt installation of ''
  9. 【Linux下载安装jdk8】
  10. 书单 | 专为程序员而写的数学书