java 时间处理

JAVA 获取时间的类有很多,今天对Date类与Calendar类进行使用总结

1、获取当前时间及转化

Date date = new Date();
System.out.println(date);

//cal作为Calendar类的子类对象,对应用户所在的时区
Calendar cal = Calendar.getInstance();
System.out.println(now.getTime());

时间的输出格式

//date
Wed Jul 31 09:31:25 GMT+08:00 2019
//cal
Wed Jul 31 09:43:16 GMT+08:00 2019

  Calendar 和 Date 转化

// Calendar转化为Date
Calendar cal=Calendar.getInstance();
Date caltodate=cal.getTime();

// Date转化为Calendar
Date date=new Date();
Calendar cal=Calendar.getInstance();
cal.setTime(date);

2、格式修改并打印

//时间格式类型
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");  

Date date = new Date();
//转化为 string 类型
String dateStr= formatter.format(date);
//打印当前日期2019-07-31
System.out.println(dateStr);

Calendar calendar = Calendar.getInstance();
//打印当前日期2019-07-31
System.out.println(formatter.format(calendar.getTime())); 

3、获取年、月、日

Calendar now = Calendar.getInstance();
System.out.println(now.getTime());

System.out.println("年:" + now.get(Calendar.YEAR));
//老外把一月份整成了0,翻译成中国月份要加1
System.out.println("月:" + (now.get(Calendar.MONTH) + 1));
 
System.out.println("日:" + now.get(Calendar.DAY_OF_MONTH));
 
System.out.println("时:" + now.get(Calendar.HOUR_OF_DAY));
 
System.out.println("分:" + now.get(Calendar.MINUTE));
 
System.out.println("秒:" + now.get(Calendar.SECOND));

4、输出指定日期

    Calendar :月份的下标从 0 开始,设置时同样需要注意,比如我们设置为 2 月 15 日除夕当晚的倒计时的最后一秒: 2019-07-31 9:57:59  可以这样

Calendar cal = Calendar.getInstance();
// 如果想设置为某个日期,可以一次设置年月日时分秒,由于月份下标从0开始赋值月份要-1
// cal.set(year, month, date, hourOfDay, minute, second);
cal.set(2019, 6, 31, 9, 57, 59);

// 或者6个字段分别进行设置,由于月份下标从0开始赋值月份要-1
cal.set(Calendar.YEAR, 2019);
cal.set(Calendar.MONTH, Calendar.JULY);
cal.set(Calendar.DAY_OF_MONTH, 31);
cal.set(Calendar.HOUR_OF_DAY, 9);
cal.set(Calendar.MINUTE, 57);
cal.set(Calendar.SECOND, 59);
System.out.println(cal.getTime());

   Date :获取时间需要传入参数,一般情况下参数是符合规则的string

String dateStr = '2019-07-31';

//获取string对应date日期:
Date date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr );

5、获取当前是星期几

/*
 * 注:格式化字符串存在区分大小写
 *对于创建SimpleDateFormat传入的参数:EEEE代表星期,如“星期四”;MMMM代表中文月份,如“七月”;MM代表月份,如“07”;yyyy代表年份,如“2019”;dd代表天,如“31”
 */
Date date = new Date();
SimpleDateFormat dateFm = new SimpleDateFormat("EEEE");
String currSun = dateFm.format(date);
System.out.println(currSun);  


/**
 * Calendar获取当前日期是星期几
 * 国外从星期日开始计算
 * @param date
 * @return 当前日期是星期几
 */
	public String getWeekOfDate(Date date) {
		String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
		if (w < 0)
			w = 0;
		return weekDays[w];
	}

5、获取制定日期的年、月、日、星期

 /**
 * 前/后?天

 * @param d
 * @param day
 * @return
 */
    public static final Date rollDay(Date d, int day) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(d);
        cal.add(Calendar.DAY_OF_MONTH, day);
        return cal.getTime();
    }

public static void main(String[] args) {
		Date date = new Date();		
		//一周前
		Date lastdate = rollDay(date, -7);

		Calendar lastweek = Calendar.getInstance();
		lastweek.setTime(lastdate);
		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");  
		System.out.println(formatter.format(lastdate));  
       
        System.out.println("月:" + (lastweek .get(Calendar.MONTH) + 1));
        System.out.println("日:" + lastweek .get(Calendar.DAY_OF_MONTH));

		
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值