java中使用日期组件举例

本文介绍了一个实用的日期操作工具类,提供了多种日期处理方法,如格式化日期、日期加减、获取当前月第一天和最后一天等。这些方法简化了日期相关任务的处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下边代码用于获取不同的日期,作为字典用起来比较方便,记录在此:

package com.timelypower.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

public class DateUtils {

private final static String dateFormat = "yyyy-MM-dd";
private static Log log = LogFactory.getLog(DateUtils.class);

/**
* 按照指定格式返回格式好的当前日期
* @param dateFormat 默认yyyy-MM-dd
* @return
*/
public static String getCurrentDateString(String dateFormat){
return DateUtils.format(new Date(), dateFormat);
}
/**
* 说明 将日期格式化字符串,为null的返回空字符串
* @param date
* @return
*/
public static String format(Date date){
if(null == date)
return "";
SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
return sf.format(date);
}
/**
* 说明 将日期格式化字符串,为null的返回空字符串
* @param date 日期
* @param dateFormat 格式化字符串,比如:yyyy-MM-dd
* @return
*/
public static String format(Date date,String dateFormat){
if(null == dateFormat || "".equals(dateFormat))
return DateUtils.format(date);
if(null == date)
return "";
SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
return sf.format(date);
}

/**
* @说明 将指定的字符串格解析成日期类型,格式默认为:yyyy-MM-dd
* @param source 要进行解析的源字符串
* @return
*/
public static Date parase(String source)
{
SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
try {
return sf.parse(source);
} catch (ParseException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
log.info("DataUtils.parase方法出错:"+e.getMessage());
}
return null;
}
/**
* @说明 将指定的字符串格解析成日期类型 例:如果日期source=20131210,则dateFormat应为:yyyyMMdd,两个应对应
* @param source 要进行解析的源字符串
* @param dateFormat 要解析的日期格式。
* @return
*/
public static Date parase(String source,String dateFormat )
{
SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
try {
return sf.parse(source);
} catch (ParseException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
log.info("DataUtils.parase方法出错:"+e.getMessage());
}
return null;
}

/**
* @说明 对指定的日期增加或减少指定的天数
* @param date
* @param days
*/
public static Date addDays(Date date,int days){
Calendar cal = Calendar.getInstance();
cal.setTime(date);

cal.add(Calendar.DAY_OF_MONTH, days);

return cal.getTime();
}

/**
* @说明 对指定的日期增加或减少指定的天数
* @param date
* @param days
*/
public static Calendar addDays(Calendar date,int days){

date.add(Calendar.DAY_OF_MONTH, days);

return date;
}

/**
* @说明 对指定的日期增加或减少指定的月数
* @param date
* @param months
* @return
*/
public static Date addMonths(Date date,int months){
Calendar cal = Calendar.getInstance();
cal.setTime(date);

cal.add(Calendar.MONTH, months);

return cal.getTime();
}

/**
* @说明 对指定的日期增加或减少指定的月数
* @param date
* @param months
* @return
*/
public static Calendar addMonths(Calendar date,int months){
date.add(Calendar.MONTH, months);

return date;
}

/**
* @说明 对指定的日期增加或减少指定的小时数
* @param date
* @param hours
* @return
*/
public static Date addHours(Date date ,int hours){
Calendar cal = Calendar.getInstance();
cal.setTime(date);

cal.add(Calendar.HOUR_OF_DAY, hours);

return cal.getTime();
}

/**
* @说明 对指定的日期增加或减少指定的小时数
* @param date
* @param hours
* @return
*/
public static Calendar addHours(Calendar date ,int hours){
date.add(Calendar.HOUR_OF_DAY, hours);
return date;
}

/**
* @说明 以字符串形式返回当前时间的毫秒数
* @return
*/
public static String getTimeMillions(){
Calendar cal = Calendar.getInstance();
long lt = cal.getTimeInMillis();

return String.valueOf(lt);
}
/**
* 获取当前月的第一天
* @return 当前月的第一天
*/
public static String getMonthFirstDay() {
SimpleDateFormat df = new SimpleDateFormat(dateFormat);
Calendar calendar = Calendar.getInstance();
Date theDate = calendar.getTime();

GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance();
gcLast.setTime(theDate);
gcLast.set(Calendar.DAY_OF_MONTH, 1);
String day_first = df.format(gcLast.getTime());
StringBuffer str = new StringBuffer().append(day_first);
return str.toString();

}

/**
* 获取当前月的最后一天
* @return 当前月的最后一天
*/
public static String getMonthLastDay() {

Calendar calendar = Calendar.getInstance();
//最后一天
int maxday = calendar.getActualMaximum(Calendar.DATE);
calendar.set(Calendar.DATE,maxday);

SimpleDateFormat df = new SimpleDateFormat(dateFormat);
Date theDate = calendar.getTime();
String s = df.format(theDate);
StringBuffer str = new StringBuffer().append(s);
return str.toString();

}
/**
* 获得往数据库字段类型为Date型时,插入的时间
* @param date 默认为当前日期,如果为空时 方法会自动new Date()
* @param dateFormat 默认为yyyy-MM-dd
* @return
*/
public static java.sql.Date paraseSqlDate(String date,String dateFormat){
try {
if(date == null || date.length() == 0){
return new java.sql.Date(new Date().getTime());
}else{
if(dateFormat == null)
dateFormat = DateUtils.dateFormat;
SimpleDateFormat sf = new SimpleDateFormat(dateFormat);
Date d = sf.parse(date);
return new java.sql.Date(d.getTime());
}
} catch (Exception e) {
// TODO: handle exception
}
return null;
}


public static void main(String[] args) {
System.out.println(DateUtils.format(DateUtils.addMonths(new Date(), -12)));
System.out.println(getMonthLastDay());;
System.out.println(getMonthFirstDay());;
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值