*java 中现在最好用的还是java8的时间类Java 8 LocalDateTime (时间+日期)。它分为LocalTime : 只包括时间 和 LocalDate : 只包括日期*。
这是它的解释:[添加链接描述](https://www.cnblogs.com/wt20/p/8179118.html)
在这里插入代码片 public class TimeTest {`
@Test
public void testTime() {
//这两个类似
//LocalTime localTime=LocalTime.now();
//LocalDate localDate=LocalDate.now();
LocalDateTime time = LocalDateTime.now();
System.out.println(time.toString()); //字符串表示
System.out.println(time.toLocalTime()); //获取时间(LocalTime)
System.out.println(time.toLocalDate()); //获取日期(LocalDate)
System.out.println(time.getDayOfMonth()); //获取当前时间月份的第几天
System.out.println(time.getDayOfWeek()); //获取当前周的第几天
System.out.println(time.getDayOfYear()); //获取当前时间在该年属于第几天
System.out.println(time.getHour());
System.out.println(time.getMinute());
System.out.println(time.getMonthValue());
System.out.println(time.getMonth());
System.out.println("-----------------------------------");
//格式化输出
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY/MM/dd HH:mm:ss");
System.out.println(time.format(formatter));
//构造时间
LocalDateTime startTime = LocalDateTime.of(2018, 1, 1, 20, 31, 20);
LocalDateTime endTime = LocalDateTime.of(2018, 1, 3, 20, 31, 20);
//比较时间
System.out.println(time.isAfter(startTime));
System.out.println(time.isBefore(endTime));
//时间运算,相加相减
System.out.println(time.plusYears(2)); //加2年
System.out.println(time.plusDays(2)); //加两天
System.out.println(time.minusYears(2)); //减两年
System.out.println(time.minusDays(2)); //减两天
//获取毫秒数(使用Instant)
System.out.println(time.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli());
//获取秒数(使用Instant)
System.out.println(time.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond());
}
}
另外附上一个java 的时间util:
package com.cnpc.epai.xnprocessmanagement.util;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
public static final SimpleDateFormat MONTH_FORMAT = new SimpleDateFormat("yyyyMM");
public static BigDecimal getMaxDay(String source){
Calendar calendar = Calendar.getInstance();
Date date = null;
try {
date = MONTH_FORMAT.parse(source);
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException("日期格式错误");
}
calendar.setTime(date);
int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
return new BigDecimal(maxDay);
}
/**
*功能描述
* @author 李静
* @date 2019-3-15 13:15
* @param {获取格式为 yyyy-MM-dd HH:mm:ss 的时间}
* @return
*/
public static Date getNowTime(){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time= sdf.format( new Date());
Date parse=null;
try {
parse = sdf.parse(time);
} catch (ParseException e) {
e.printStackTrace();
throw new RuntimeException("日期格式错误");
}
return parse;
}
/**
*功能描述
* @author 李静
* @date 2019-3-25 18:25
* @param [inputDate, number]
* @return java.lang.String
*/
//传入date 返回指定月份之后的Str格式时间(YYYY.MM.DD格式字符串)
public static String afterMonthStr( Date inputDate, int number )
{
Calendar c = Calendar.getInstance();//获得一个日历的实例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
c.setTime(inputDate);//设置日历时间
c.add(Calendar.MONTH,number);//增加月数
String strDate = sdf.format(c.getTime());
return strDate;
}
/**
*功能描述
* @author 李静
* @date 2019-3-25 18:26
* @param [date]
* @return java.util.Date
*/
//获取指定日期的当月最后一日时间
public static Date lastDay( Date date )
{
Calendar c = Calendar.getInstance();
c.setTime(date);//设置日历时间
c.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE));
return c.getTime();
}
/**
*功能描述
* @author 李静
* @date 2019-3-25 18:26
* @param [yearMonStr]
* @return java.util.Date
*/
//将yyyyMM时间格式字符串字符串转换为date日期
public static Date transferStrToDate( String yearMonStr )
{
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
try
{
date = sdf.parse( yearMonStr );
}
catch ( ParseException e )
{
e.printStackTrace();
}
return date;
}
/**
*功能描述
* @author 李静
* @date 2019-3-25 18:26
* @param [inputDate, number]
* @return java.lang.String
*/
//传入date 返回指定月份之后的Str格式时间(YYYYMM格式字符串)
public static String afterMonthQueryStr( Date inputDate, int number )
{
Calendar c = Calendar.getInstance();//获得一个日历的实例
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
c.setTime(inputDate);//设置日历时间
c.add(Calendar.MONTH,number);//增加月数
String strDate = sdf.format(c.getTime());
return strDate;
}
/**
*功能描述
* @author 李静
* @date 2019-3-25 18:26
* @param [date]
* @return java.lang.String
*/
//将date对象转换为YYYYMM格式字符串
public static String toYearMonthStr( Date date )
{
SimpleDateFormat sf = new SimpleDateFormat( "YYYYMM" );
String dateStr = sf.format( date );
return dateStr;
}
/**
*功能描述
* @author 李静
* @date 2019-3-25 18:26
* @param [date]
* @return java.lang.String
*/
//将date对象转换为YYYY.MM.DD格式字符串
public static String yearMonthDay( Date date )
{
SimpleDateFormat sf = new SimpleDateFormat( "YYYY.MM.DD" );
String dateStr = sf.format( date );
return dateStr;
}