根据时间的秒数获取间隔月份或天数的时间

package com.base.test;

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

public class Test0 {

	public static void main(String[] args) {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		System.out.println(format.format(new Date((long) 1517291199 * 1000)));
		System.out.println("获取下个月的这个日期,如果不存在获取下个月最后一天:");
		System.out.println(format.format(new Date((long) getDayOfSpecialTime(1517291199, 1, 0, 2) * 1000)));
		System.out.println("获取第二日日期:");
		System.out.println(format.format(new Date((long) getDayOfSpecialTime(1517291199, 0, 1, 2) * 1000)));
	}

	/**
	 * 获取制定间隔月份,间隔天数的时间INT数值;如果下个月没有这个日期则取最后一个日期
	 * 
	 * @param dateInseconds
	 *            日期
	 * @param intervalMonth
	 *            间隔的月份,如果为0则表示当月
	 * @param intervalDay
	 *            间隔的天数,如果为0表示当天,1表示第二天
	 * @type 类型,如果为1,则是23:59:59 为2则是00:00:00
	 * @return
	 */
	private static Integer getDayOfSpecialTime(int dateInSeconds, int intervalMonth, int intervalDay, int type) {
		long millSeconds = (long) dateInSeconds * 1000;
		Calendar calendar = Calendar.getInstance();
		calendar.setTimeInMillis(millSeconds);
		// 获取日所在月
		int month = calendar.get(Calendar.MONTH);
		calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + intervalMonth,
				calendar.get(Calendar.DAY_OF_MONTH),
				0, 0, 0);
		if (month + intervalMonth < calendar.get(Calendar.MONTH)) {
			calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), 1, 0, 0, 0);
			calendar.add(Calendar.DAY_OF_MONTH, -1);
		}
		if (intervalDay != 0) {
			calendar.add(Calendar.DAY_OF_MONTH, intervalDay);
		}
		if (type == 1) {
			calendar.set(Calendar.HOUR_OF_DAY, 23);
			calendar.set(Calendar.MINUTE, 59);
			calendar.set(Calendar.SECOND, 59);
		}
		return (int) (calendar.getTimeInMillis() / 1000);
	}

	public static Date getFirstDateOfMonth(Date theDate) {
		Calendar c = new GregorianCalendar();
		c.setTime(theDate);
		c.set(Calendar.DAY_OF_MONTH, 1);
		c.set(Calendar.HOUR_OF_DAY, 0);
		c.set(Calendar.MINUTE, 0);
		c.set(Calendar.SECOND, 0);
		c.set(Calendar.MILLISECOND, 0);
		return c.getTime();
	}
}

测试结果:

2018-01-30 13:46:39
获取下个月的这个日期,如果不存在获取下个月最后一天:
2018-02-28 00:00:00
获取第二日日期:
2018-01-31 00:00:00



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值