Java实现的日期处理类完整实例

作者:夏日娃 时间:2023-12-08 00:16:10 

本文实例讲述了Java实现的日期处理类。分享给大家供大家参考,具体如下:

开发中常常要使用日期,先小结如下,以备后用。


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class FormatTime {
 private final static SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
 private final static SimpleDateFormat sdfymdhm = new SimpleDateFormat("yyyyMMddHHmmss");
 private final static SimpleDateFormat sdfymdhms =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 /**
  *
 * @Title: getCurrentDay
 * @Description: TODO 获取当天时间(20161109)
 * @return
  */
 public static String getCurrentDay(){
   return sdf.format(new Date());
 }
 /**
  *
 * @Title: fTime2
 * @Description: TODO 获取time这个日期以前dayAgo天的日期
 * @return
  */
 public static String fTime(String time,int dayAgo){
   Date date = null;
   try {
     date = sdf.parse(time);
   } catch (ParseException e) {
       throw new RuntimeException(e);
   }
   Calendar calendar = Calendar.getInstance();
   calendar.setTime(date);
   if(dayAgo>0){
     calendar.add(Calendar.DAY_OF_MONTH, -dayAgo);//前15天数据
     date = calendar.getTime();
     calendar.setTime(date);
   }
   int year=calendar.get(Calendar.YEAR);
   int month=calendar.get(Calendar.MONTH) + 1;
   int day = calendar.get(Calendar.DAY_OF_MONTH);
   String mon="";
   String d="";
   if(month<10){
     mon="0"+month;
   }else{
     mon=month+"";
   }
   if(day<10){
     d="0"+day;
   }else{
     d=""+day;
   }
   String ret=year+""+mon+""+d;
   return ret;
 }
 /**
  *
 * @Title: fTime2
 * @Description: TODO 获取time这个日期以后dayAfter天的日期
 * @return
  */
 public static String fTime2(String time,int dayAfter){
   Date date = null;
   try {
     date = sdf.parse(time);
   } catch (ParseException e) {
       throw new RuntimeException(e);
   }
   Calendar calendar = Calendar.getInstance();
   calendar.setTime(date);
   if(dayAfter>0){
     calendar.add(Calendar.DAY_OF_MONTH, +dayAfter);//后15天数据
     date = calendar.getTime();
     calendar.setTime(date);
   }
   int year=calendar.get(Calendar.YEAR);
   int month=calendar.get(Calendar.MONTH) + 1;
   int day = calendar.get(Calendar.DAY_OF_MONTH);
   String mon="";
   String d="";
   if(month<10){
     mon="0"+month;
   }else{
     mon=month+"";
   }
   if(day<10){
     d="0"+day;
   }else{
     d=""+day;
   }
   String ret=year+""+mon+""+d;
   return ret;
 }
 /**
  *
 * @Title: getDefaultTime
 * @Description: TODO 获取昨天的日期
 * @return
  */
 public static String getDefaultTime(){
   Calendar calendar = Calendar.getInstance();
   calendar.add(Calendar.DAY_OF_MONTH, -1);//前1天
   Date date = calendar.getTime();
   String time=sdf.format(date);
   return time;
 }
 /**
  *
 * @Title: getSunday
 * @Description: TODO 获取最近一个星期天
 * @return
  */
 public static String getSunday(){
   SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
   Calendar c = Calendar.getInstance();
   c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
   return f.format(c.getTime());
 }
 /**
  *
 * @Title: getMonthFirstDay
 * @Description: TODO 获取本月第一天
 * @return
  */
 public static String getCurrentMonthFirstDay(){
   Calendar  cal_1=Calendar.getInstance();//获取当前日期
   cal_1.add(Calendar.MONTH, 0);
   cal_1.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
   String firstDay = sdf.format(cal_1.getTime());
   return firstDay;
 }
 /**
  *
 * @Title: getMonthFirstDay
 * @Description: TODO 获取上月第一天
 * @return
  */
 public static String getPreviousMonthFirstDay(){
  //获取当前月第一天:
 Calendar c = Calendar.getInstance();
 c.add(Calendar.MONTH, -1);
 c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
 String first = sdf.format(c.getTime());
 return first;
 }
 /**
  *
 * @Title: getMonthFirstDay
 * @Description: TODO 获取上月最后一天
 * @return
  */
 public static String getPreviousMonthLastDay(){
 //获取当前月最后一天
 Calendar ca = Calendar.getInstance();
 ca.set(Calendar.DAY_OF_MONTH,0);//
 String lastDay = sdf.format(ca.getTime());
 return lastDay;
 }
 /**
  *
 * @Title: getCurrentMonthLastDay
 * @Description: TODO 获取指定时间最后一天
 * @return
  */
 public static String getCurrentMonthLastDay(String time){
   Date date =null;
  try {
   date= sdf.parse(time);
 } catch (ParseException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
 }
 //获取当前月最后一天
 Calendar ca = Calendar.getInstance();
 ca.setTime(date);
 ca.set(Calendar.DAY_OF_MONTH,
     ca.getActualMaximum(Calendar.DAY_OF_MONTH)); //
 String lastDay = sdf.format(ca.getTime());
 return lastDay;
 }
 /***
  *
 * @Title: getCurrentWeekDay
 * @Description: TODO 获取本周周一
  */
 public static String getCurrentMonday(){
    Calendar cal = Calendar.getInstance();
    cal.setFirstDayOfWeek(Calendar.MONDAY);//将每周第一天设为星期一,默认是星期天
    cal.add(Calendar.DATE, 0);
    cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
    String monday = sdf.format(cal.getTime());
    return monday;
 }
 /***
  *
 * @Title: getPreviousSunday
 * @Description: TODO 获取上周周日
  */
 public static String getPreviousSunday(){
    Calendar cal = Calendar.getInstance();
    cal.setFirstDayOfWeek(Calendar.MONDAY);//将每周第一天设为星期一,默认是星期天
    cal.add(Calendar.DATE, -1*7);
    cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    String sunday =sdf.format(cal.getTime());
    return sunday;
 }
 /**
  *
 * @Title: getMiniSencond
 * @Description: TODO 将日期转换为毫秒数
 * @param str
 * @return
  */
 public static String getMiniSencond(String str){
   long millionSeconds=0;
   try {
     millionSeconds = sdfymdhm.parse(str).getTime();//毫秒
   } catch (ParseException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }
   return millionSeconds+"";
 }
  /**
  *
 * @Title: getDateSencond
 * @Description: TODO 将日期转换为毫秒数
 * @param str
 * @return
  */
 public static long getDateSencond(String str){
   long millionSeconds=0;
   try {
     millionSeconds = sdfymdhms.parse(str).getTime();//毫秒
   } catch (ParseException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
   }
   return millionSeconds;
 }
 /**
  * 计算日期相差天数
  * @param str1
  * @param str2
  * @return
  */
 public static int getDistanceOfTwoDate(String str1,String str2){
   int result=0;
   try{
     Date date1 = sdf.parse(str1);
     Date date2 =sdf.parse(str2);
     Calendar aCalendar = Calendar.getInstance();
       aCalendar.setTime(date1);
       int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
       aCalendar.setTime(date2);
       int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
       result = day1-day2;
   }catch(Exception e){
     e.printStackTrace();
   }
   return result;
 }
 /**
  *
 * @Title: long2Date
 * @Description: TODO long 转日期(年-月-日 时-分-秒)
 * @param timestamp
 * @return
  */
 public static String longToDate(Long msecond){
   Date date = new Date(msecond);
   return sdfymdhms.format(date);
 }
}

PS:这里再为大家推荐几款关于日期与天数计算的在线工具供大家使用:

在线日期/天数计算器:
http://tools.jb51.net/jisuanqi/date_jisuanqi

在线万年历日历:
http://tools.jb51.net/bianmin/wannianli

在线阴历/阳历转换工具:
http://tools.jb51.net/bianmin/yinli2yangli

希望本文所述对大家java程序设计有所帮助。

来源:http://blog.csdn.net/u011625492/article/details/72843471

标签:Java,日期
0
投稿

猜你喜欢

  • 详解在java中进行日期时间比较的4种方法

    2022-09-03 23:35:52
  • SpringBoot打包发布到linux上(centos 7)的步骤

    2023-08-11 06:35:55
  • android实现圆环倒计时控件

    2021-12-15 20:55:54
  • Activiti7整合Springboot使用记录

    2022-11-11 06:17:24
  • C#利用ZXing.Net生成条形码和二维码

    2023-11-04 00:36:02
  • Android activity堆栈及管理实例详解

    2022-07-28 01:17:14
  • Java Socket编程(四) 重复和并发服务器

    2022-06-29 07:07:06
  • Java中单例模式的7种写法

    2021-09-05 23:40:57
  • 解析Spring Mvc Long类型精度丢失问题

    2021-11-06 12:27:37
  • java8 如何实现分组计算数量和计算总数

    2022-05-05 01:17:32
  • Java如何基于IO流实现同一文件读写操作

    2023-07-30 15:06:38
  • 关于springboot响应式编程整合webFlux的问题

    2023-12-07 07:25:55
  • Java实现有限状态机的推荐方案分享

    2022-01-07 15:54:27
  • SpringBoot用@Async注解实现异步任务

    2023-08-07 06:36:09
  • Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)

    2023-11-18 23:26:56
  • Go Java算法之累加数示例详解

    2023-03-16 00:43:31
  • spring boot打包成可执行jar包

    2022-09-26 12:48:14
  • C#实现文本文件读写方法汇总

    2023-10-27 16:57:40
  • Android编程使用Fragment界面向下跳转并一级级返回的实现方法

    2021-08-20 19:56:51
  • 浅谈Mybatis获取参数值的方式

    2022-09-22 07:56:21
  • asp之家 软件编程 m.aspxhome.com