1、java 时间处理工具类

package com.meizu.mdsp.common.utils;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;import org.apache.commons.lang3.time.DateUtils;public final class DateTimeUtil {public final static String PATTERN_LONG = "yyyy-MM-dd HH:mm:ss";public final static String PATTERN_LONG2 = "yyyyMMdd HH:mm:ss";public final static String PATTERN_A = "yyyyMM";public final static String PATTERN_B = "yyyyMMdd";public final static String PATTERN_C = "yyyy-MM-dd";public static final String PATTERN_D = "yyMMdd";public final static String PATTERN_ZH = "yyyy年MM月dd日";public final static String PATTERN_ZH_MD = "MM月dd日";public final static String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };private final static SimpleDateFormat DEFAULT_FORMAT = new SimpleDateFormat( PATTERN_B );private static final ThreadLocal<Calendar> DATE_LOCAL = new ThreadLocal<Calendar>();static {DATE_LOCAL.set( Calendar.getInstance() );}public static String formatDateDefault( Date date ) {return DEFAULT_FORMAT.format( date );}/*** 格式化日期* @param date 需要格式化的 日期对象* @param pattern 日期样式*/public static String formatDate( Date date, String pattern ) {SimpleDateFormat format = new SimpleDateFormat( pattern );return format.format( date );}/*** 格式化日期* @param date 需要格式化的 日期对象* @param pattern 日期样式*/public static String formatDate( Date date ) {return formatDate( date, PATTERN_LONG );}/*** 格式化日期* @param day 相对当前时间的日期偏移,-1:日期向前偏移一天/1:日期向后偏移一天* @param pattern 日期样式*/public static String formatDate( int day, String pattern ) {Calendar c = Calendar.getInstance();c.add( Calendar.DAY_OF_MONTH, day );return formatDate( c.getTime(), pattern );}/*** 计算相对偏移日期午夜的秒数* @param day 相对当前时间的日期偏移,-1:日期向前偏移一天/1:日期向后偏移一天*/public static int getExpiration( int day ) {Calendar c = Calendar.getInstance();long midnight = c.getTimeInMillis();c.set( Calendar.HOUR_OF_DAY, 0 );c.set( Calendar.MINUTE, 0 );c.set( Calendar.SECOND, 0 );c.set( Calendar.MILLISECOND, 0 );c.add( Calendar.DAY_OF_MONTH, day );return ( int )( ( c.getTimeInMillis() - midnight ) / 1000 );}/*** 返回日期年月日整型,如20140318*/public static int getYearMonthDay( Calendar calendar ) {return calendar.get( Calendar.YEAR ) * 10000+ ( calendar.get( Calendar.MONTH ) + 1 ) * 100+ calendar.get( Calendar.DATE );}/*** 获取日期的年期,如201401, addPeriodCount月份偏移量*/public static int getYearPeriod( Date date, int addPeriodCount ) {Calendar calendar = Calendar.getInstance();calendar.setTime( date );calendar.add( Calendar.MONTH, addPeriodCount );int y = calendar.get( Calendar.YEAR );int m = calendar.get( Calendar.MONTH ) + 1;return y * 100 + m;}/*** 匹配字符串首次出现的yyyy-mm-dd hh:mm:ss格式的时间* @param str* @return*/public static String getTime( String str ) {String reg = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}";Pattern MobilePhonePattern = Pattern.compile( reg );Matcher m = MobilePhonePattern.matcher( str );while( m.find() ) {return m.group().trim();}return null;}/*** 把字符串按格式转换成Date对象* @param text* @param pattern* @return*/public static Date parse( String text, String pattern ) {SimpleDateFormat format = new SimpleDateFormat( pattern );try {return format.parse( text );} catch( ParseException e ) {return null;}}/*** 默认用yyyy-MM-dd HH:mm:ss的格式进行转换* @param text* @return*/public static Date parse( String text ) {SimpleDateFormat format = new SimpleDateFormat( PATTERN_LONG );try {return format.parse( text );} catch( ParseException e ) {return null;}}/*** 获取 当前时间* @return*/@Deprecatedpublic static Date getNow() {return DATE_LOCAL.get().getTime();}/*** 获取当前时间* @return*/public static Date now() {return new Date();}/*** 判断日期是否为今天 * @param date* @return*/public static boolean isToday( Date date ) {if( date == null ) {return false;}Date now = getNow();return formatDate( now, PATTERN_B ).equals( formatDate( date, PATTERN_B ) );}/*** 判断日期是否为昨天* @param date* @return*/public static boolean isYesterday( Date date ) {if( date == null ) {return false;}Date now = getNow();return formatDate( DateUtils.addDays( now, -1 ), PATTERN_B ).equals( formatDate( date, PATTERN_B ) );}/*** 计算两个日期之间相差日期天数(如:2014-10-09与2014-10-10相差一天)* @param sd* @param ed*/public static int diffDateDay( Date sd, Date ed ) {Calendar calendar = Calendar.getInstance();calendar.setTime( sd );int sDay = calendar.get( Calendar.DAY_OF_YEAR );int sYear = calendar.get( Calendar.YEAR );calendar.setTime( ed );int eDay = calendar.get( Calendar.DAY_OF_YEAR );int eYear = calendar.get( Calendar.YEAR );// 每年的天数int oneYearDays = 365;if( ( sYear % 4 == 0 && sYear % 100 != 0 ) || sYear % 400 == 0 ) {// 润年366天oneYearDays = 366;}return ( eYear - sYear ) * oneYearDays + eDay - sDay;}public static Date toLocalDate( Date GMT ) throws ParseException {String localDateStr = formatDate( GMT );return parse( localDateStr );}public static Date getStartTime( Date date ) {Calendar today = Calendar.getInstance();today.setTime( date );today.set( Calendar.HOUR_OF_DAY, 0 );today.set( Calendar.MINUTE, 0 );today.set( Calendar.SECOND, 0 );today.set( Calendar.MILLISECOND, 0 );return today.getTime();}public static Date getEndTime( Date date ) {Calendar today = Calendar.getInstance();today.setTime( date );today.set( Calendar.HOUR_OF_DAY, 23 );today.set( Calendar.MINUTE, 59 );today.set( Calendar.SECOND, 59 );today.set( Calendar.MILLISECOND, 999 );return today.getTime();}public static Date getDayStartTime( int offset ) {Calendar today = Calendar.getInstance();today.add( Calendar.DAY_OF_MONTH, offset );today.set( Calendar.HOUR_OF_DAY, 0 );today.set( Calendar.MINUTE, 0 );today.set( Calendar.SECOND, 0 );today.set( Calendar.MILLISECOND, 0 );return today.getTime();}public static Date getMonthStartTime( int offset ) {Calendar today = Calendar.getInstance();today.add( Calendar.MONTH, offset );today.set( Calendar.HOUR_OF_DAY, 0 );today.set( Calendar.MINUTE, 0 );today.set( Calendar.SECOND, 0 );today.set( Calendar.MILLISECOND, 0 );return today.getTime();}public static Date getDayEndTime( int offset ) {Calendar todayEnd = Calendar.getInstance();todayEnd.add( Calendar.DAY_OF_MONTH, offset );todayEnd.set( Calendar.HOUR_OF_DAY, 23 );todayEnd.set( Calendar.MINUTE, 59 );todayEnd.set( Calendar.SECOND, 59 );todayEnd.set( Calendar.MILLISECOND, 999 );return todayEnd.getTime();}public static Date getHourTime( long timestamp ) {Calendar cal = Calendar.getInstance();cal.setTime( new Date( timestamp ) );cal.set( Calendar.MINUTE, 0 );cal.set( Calendar.SECOND, 0 );cal.set( Calendar.MILLISECOND, 0 );return cal.getTime();}public static Date getTodayHourDate( int hour ) {Calendar todayEnd = Calendar.getInstance();todayEnd.set( Calendar.HOUR_OF_DAY, hour );todayEnd.set( Calendar.MINUTE, 0 );todayEnd.set( Calendar.SECOND, 0 );todayEnd.set( Calendar.MILLISECOND, 0 );return todayEnd.getTime();}public static int getHourOfDay() {Calendar today = Calendar.getInstance();return today.get( Calendar.HOUR_OF_DAY );}
}

java 时间处理工具类相关推荐

  1. java时间日期工具类_java日期处理工具类

    java日期处理工具类 import java.text.DecimalFormat; import java.text.ParsePosition; import java.text.SimpleD ...

  2. Java时间处理工具类(详细)

    目录 第一类: 第二类: 第一类: package com.chinamcloud.spiderMember.util;import org.apache.commons.lang3.StringUt ...

  3. 非常强大的java时间处理工具类!

    xk-time 是时间转换,时间计算,时间格式化,时间解析,日历,时间cron表达式和时间NLP等的工具,使用Java8,线程安全,简单易用,多达70几种常用日期格式化模板,支持Java8时间类和Da ...

  4. java时间日期工具类_java工具类--日期相关;

    日期相关 Date类 1.通常使用的是java.util包 2.导包 拿来使用 构建对象 3.通常使用无参数的构造方法 或者带long构造方法 4.Date类中常用的方法 before(); afte ...

  5. java 时间转换工具类 yyyyMMdd HH:mm

    获取系统当前时间戳 : System.currentTimeMillis()) 获取系统当前时间任意格式,自己根据生成的格式选择性填写 /*** 获取当前时间* 把需要生成的时间格式替换一下就可以* ...

  6. Java时间转换工具类

    /*** 获取对应毫秒转换成的天 时 分 秒 ms** @author 刘子固* @dete 2022.9.27*/ public class TimeDateUtils {/*** 一秒钟1000毫 ...

  7. Java格式化日期用斜杠_[java工具类01]__构建格式化输出日期和时间的工具类

    在之前的学习中,我写过一篇关于字符串格式化的,就主要设计到了时间以及日期的各种格式化显示的设置,其主要时通过String类的fomat()方法实现的. 我们可以通过使用不同的转换符来实现格式化显示不同 ...

  8. Java中Date类型如何向前向后滚动时间,( 附工具类)

    Java中的Date类型向前向后滚动时间(附工具类) 废话不多说,先看工具类: 1 import java.text.SimpleDateFormat; 2 import java.util.Cale ...

  9. java工具类-计算相对时间的工具类即两个时间的时间差

    java相对时间的工具类,此类中有两个暴露的方法,相对于当前时间的方法和相对于某时间的方法. 返回String,如:2小时前/3天2时13秒/昨天 具体请运行查看 (DateTimeFormatUti ...

  10. JAVA获取N个工作日后的时间的工具类、考虑上班时间、时区

    DayWorkTime代表工作时间描述类 HolidayUtils是计算时间的工具类,addSecondByWorkDay用于计算时间加上指定秒后的工作时间,会自动跳过周末.节假日等.其中holida ...

最新文章

  1. 181个NLP教程合集,Colab一键直达,无需环境配置,此外还有481个文本数据集
  2. CSS3颜色渐变模式
  3. 保存/恢复cxGrid布局
  4. Flowable工作流入门
  5. c jni 调用java_JNI NDK (AndroidStudio+CMake )实现C C++调用Java代码流程
  6. ubuntu硬盘序列号怎么查询_Ubuntu16.04中查看硬盘的型号和读取速度
  7. 房友中介管理系统服务器地址查询,房友中介连接服务器设置
  8. 【ROS】header.stamp与double转换
  9. 为Windows 7的winsxs文件夹瘦身,慎重。
  10. GME轧空事件的战后处置和思考
  11. 软件测试 | 测试开发 | Nginx反向代理及内部模型简述
  12. LaTex\TexStudio 数学矩阵
  13. node联合echarts简单实现疫情地图
  14. 转载的 C#.NET面试题
  15. 在vue中使用Google Recaptcha验证
  16. 【网络安全】逻辑漏洞保姆级讲解
  17. 腾讯云系统镜像和使用镜像创建云主机
  18. C语言极坐标转换为代数式,相量的代数式转化为极坐标怎么用计算器啊
  19. 不使用内置函数的情况下,如何使用Python实现求平均值、最大值和最小值?
  20. 独立端漫画小程序源码/看漫画微信小程序源码

热门文章

  1. 【Excel】五种方法添加打勾方框(其他符号差不多)
  2. 国内外计算机视觉领域优秀研究团队汇总
  3. Python学生成绩计算和平均值
  4. 旋转矩阵到旋转角的计算
  5. [高项]定性风险分析VS定量风险分析
  6. Android 开发调用百度地图客户端
  7. Failed to read artifact descriptor for com.google.errorprone:javac:jar:9+181-r4173-1
  8. 常用模板 UPD12/4
  9. 微信小程序开发实战1 微信小程序开发概述
  10. 于的繁体字有几种写法_【于字书法繁体字怎么写】作文写作问答 - 归教作文网...