java日期函数精确到日,java日期时间函数分享

前言:

对于新手程序员的我来说,写业务代码是现在的日常,在此过程中经常需要对日期时间进行处理,我挑了几个较有用的日期处理函数分享给大家。

正文:

1、将某格式的时间字符串转化成毫秒时间戳表示的字符串:

public static String dateTimeStrToMills(String dateTime,String format){

String dateStr = null;

SimpleDateFormat sdf = new SimpleDateFormat(format);

Calendar calendar = Calendar.getInstance();

calendar.clear();

try {

Date d = new Date();

d = sdf.parse(dateTime);

calendar.setTime(d);

dateStr = calendar.getTimeInMillis()+"ms";

} catch (ParseException e) {

e.printStackTrace();

}

return dateStr;

}

测试例:

@Test

public void test1(){

String date = "2018-10-10 08:30:00";

String format = "yyyy-MM-dd HH:mm:ss";

String timeMS = DateTimeUtils.dateTimeStrToMills(date,format);

System.out.println("毫秒时间:" + timeMS);//毫秒时间:1539131400000ms

}

2、获取某个月的天数:

public static int getDayNumOfMonth(int year,int month){

Calendar calendar = Calendar.getInstance();

calendar.clear();

calendar.set(year, month,0);

return calendar.get(Calendar.DAY_OF_MONTH);

}

测试例:

@Test

public void test2(){

int year = 2018;

int month = 10;

int dayNum = DateTimeUtils.getDayNumOfMonth(year,month);

System.out.println("dayNum:" + dayNum);//dayNum:31

}

3、获取某日、月、年前后的日期:

public static String getBeforeOrAfterDateType(int num,String date,String format,int timeType){

SimpleDateFormat sdf = new SimpleDateFormat(format);

String resultDate = "";

Calendar calendar = Calendar.getInstance();

calendar.clear();

try {

Date d = new Date();

d = sdf.parse(date);

calendar.setTime(d);

calendar.add(timeType, num);//一天的结束是第二天的开始

resultDate = sdf.format(calendar.getTime());

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return resultDate;

}

测试例:

@Test

public void test3(){

//获取某个月前面一个月

int num = -1;

String date = "2018-10";

String format = "yyyy-MM";

int timeType = Calendar.MONTH;

String resultDate = DateTimeUtils.getBeforeOrAfterDateType(num,date,format,timeType);

System.out.println("resultDate:" + resultDate);//resultDate:2018-09

//获取某天几天后的日期

num = 3;

date = "2018-10-05";

format = "yyyy-MM-dd";

timeType = Calendar.DAY_OF_MONTH;

resultDate = DateTimeUtils.getBeforeOrAfterDateType(num,date,format,timeType);

System.out.println("resultDate:" + resultDate);//resultDate:2018-10-08

}

4、根据毫秒时间戳获得格式化后的日期:

public static String millisecondToDate(Long millisecond,String dateFormat){

Date date = new Date(millisecond);

GregorianCalendar gc = new GregorianCalendar();

gc.setTime(date);

SimpleDateFormat format = new SimpleDateFormat(dateFormat);

String sb = format.format(gc.getTime());

return sb;

}

测试例:

@Test

public void test4(){

long mill = 1539131400000l;

String format = "yyyy-MM-dd HH:mm:ss";

String date = DateTimeUtils.millisecondToDate(mill,format);

System.out.println("date:" + date);//date:2018-10-10 08:30:00

}

5、获取某月第一天:

public static String getFirstDayOfMonth(int year,int month){

Calendar cal = Calendar.getInstance();

cal.set(Calendar.YEAR, year);

cal.set(Calendar.MONTH, month-1);

int firstDay = cal.getActualMinimum(Calendar.DAY_OF_MONTH);

cal.set(Calendar.DAY_OF_MONTH, firstDay);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

String firstDayOfMonth = sdf.format(cal.getTime());

return firstDayOfMonth;

}

测试例:

@Test

public void test5(){

int year = 2018;

int month = 11;

String format = "yyyy-MM-dd";

String date = DateTimeUtils.getFirstDayOfMonth(year,month,format);

System.out.println("date:" + date);//date:2018-11-01

}

6、获取某月最后一天:

public static String getLastDayOfMonth(int year,int month,String format){

Calendar cal = Calendar.getInstance();

cal.clear();

cal.set(Calendar.YEAR, year);

cal.set(Calendar.MONTH, month-1);

int lastDay = 0;

lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH);

cal.set(Calendar.DAY_OF_MONTH, lastDay);

SimpleDateFormat sdf = new SimpleDateFormat(format);

String lastDayOfMonth = sdf.format(cal.getTime());

return lastDayOfMonth;

}

测试例:

@Test

public void test6(){

int year = 2018;

int month = 11;

String format = "yyyy-MM-dd";

String date = DateTimeUtils.getLastDayOfMonth(year,month,format);

System.out.println("date:" + date);//date:2018-11-30

}

7、获取起止日期之间的所有字符串(可自定义间隔、格式、日期类型):

public static ListgetDatesBetweenTwoDate(String begin,String end,int num,int timeType,String format){

ListlDates;

lDates = new ArrayList<>();

try {

SimpleDateFormat sdf = new SimpleDateFormat(format);

Date beginDate = sdf.parse(begin);

Date endDate = sdf.parse(end);

lDates.add(sdf.format(beginDate));

Calendar calendar = Calendar.getInstance();

calendar.setTime(beginDate);

boolean bContinue = true;

while(bContinue){

calendar.add(timeType, num);

if(endDate.after(calendar.getTime())){

lDates.add(sdf.format(calendar.getTime()));

}else{

break;

}

}

lDates.add(sdf.format(endDate));

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return lDates;

}

测试例:

@Test

public void test7(){

String startDate = "2018-10-10";

String endDate = "2018-10-15";

String format = "yyyy-MM-dd";

int num = 1;

int timeType = Calendar.DAY_OF_MONTH;

ListtimeList = DateTimeUtils.getDatesBetweenTwoDate(startDate,endDate,num,timeType,format);

System.out.println(timeList.toString());

//[2018-10-10, 2018-10-11, 2018-10-12, 2018-10-13, 2018-10-14, 2018-10-15]

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值