Java实现的日期处理类完整实例
作者:夏日娃 发布时间:2023-12-08 00:16:10
标签:Java,日期
本文实例讲述了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
0
投稿
猜你喜欢
- MyBatis在SQL语句中获取list大小需求:使用MyBatis进行开发时,在一个SQL语句中需要拼接list的大小。大家都知道,当我们
- 我们通过项目的reimport等众多办法无法解决之后:假设这个是爆红的,因为被我已经解决了。我们进入到我们的本地仓库, 新建包。在repos
- 利用 Spring 工厂加载机制,实例化 ApplicationListener 实现类,并排序对象集合创建应用事件 * 创建类实现接口Ap
- 推荐IntelliJ IDEA 2020.2.3永久破解激活教程(亲测有效)正文开始今天将idea更新到了最新版2020.2.3,结果发现新
- 1 关于自动内存管理Java是由jvm来管理内存,包括自动分配以及自动回收,因此它不容易出现内存泄漏和内存溢出问题。C/C++,由程序员手动
- 第一步:下载需要添加的jar包可以在maven库中查找下载,也可以在对应官网下载maven库网址:https://mvnrepository
- 正则: “.”和"\""."点儿,在正则表达式中表示任意一个字符。"\"在正则表
- 第1部分 ArrayList介绍ArrayList简介ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量
- 1、同步消息即时性较强,重要的消息,且必须有回执的消息,例如短信,通知(转账成功)生产者:public class Producer { &
- 一、参数管理在编程系统中,为了能写出良好的代码,会根据是各种设计模式、原则、约束等去规范代码,从而提高代码的可读性、复用性、可修改,实际上个
- 在spring中有很多以XXXAware命名的接口,很多人也不清楚这些接口都是做什么用的,这篇文章将描述常用的一些接口。一,Applicat
- 介绍Java中的享元模式(Flyweight Pattern)是一种结构型设计模式,旨在通过共享尽可能多的对象来减少内存占用和提高性能.Ja
- 注解从java5开始加入这一特性,发展到现在已然是遍地开花,在很多框架中得到了广泛的使用,用来简化程序中的配置。那充满争议的类型注解究竟是什
- 本实例使用用户和订单的例子做说明: 一个用户可以有多个订单, 一个订单只对应一个用户。(其中应用到注释)1.代码的结构2. 建表语
- 面试中可能会被问到为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?Java 创建线程的方法实际
- 本文实例讲述了Java基于栈方式解决汉诺塔问题。分享给大家供大家参考,具体如下:/** * 栈方式非递归汉诺塔 * @author zy *
- 一、序言(一)背景内容软件应用技术架构中DAO层最常见的选型组件为MyBatis,熟悉MyBatis的朋友都清楚,曾几何时MyBatis是多
- [程序中使用的数据结构和符号说明]HitBrick类GreenBallThread控制小球路线xUp,yUp,bouncing定义变量存储1
- 实际开发中订单往往都包含着订单状态,用户每进行一次操作都要切换对应的状态,而每次切换判断当前的状态是必须的,就不可避免的引入一系列判断语句,
- 在工作上,我最近对一个现有的Java项目代码进行了清理。完成之后,我发现了一些反复出现的不规范代码。所以,我把它们整理成了一个列表出来分享给