笔记六:课程实验中遇到的问题与解决(3)

笔记六:课程实验中遇到的问题与解决(3)

一、Java中关于日期操作的一些总结

在实现三中为了实现课表安排与值班安排,需要使用到很多不同的对日期的操作,现将这些操作总结如下

1. 字符串转日期或日期转字符串

/**
  SimpleDateFormat函数语法:
  G 年代标志符
  y 年
  M 月
  d 日
  h 时 在上午或下午 (1~12)
  H 时 在一天中 (0~23)
  m 分
  s 秒
  S 毫秒
  E 星期
  D 一年中的第几天
  F 一月中第几个星期几
  w 一年中第几个星期
  W 一月中第几个星期
  a 上午 / 下午 标记符
  k 时 在一天中 (1~24)
  K 时 在上午或下午 (0~11)
  z 时区
 */

// 创建SimpleDateFormat对象实例并定义好转换格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
System.out.println("把当前时间转换成字符串:" + sdf.format(new Date()));

// 格式需要与上面一致,不然会出现异常     
Date date = sdf.parse("2005-12-15 15:30:23");
System.out.println("字符串转换成时间:" + date);

2. 日期加一年、一月、一周、一日

Date date = new Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(Calendar.YEAR, 1); 
// 把日期往后增加一年,负数减一年
calendar.add(Calendar.MONTH, 1); 
// 把日期往后增加一个月,负数减一个月
calendar.add(Calendar.WEEK_OF_MONTH, 1); 
// 把日期往后增加一周,负数减一周
calendar.add(Calendar.DAY_OF_MONTH, 1); 
// 把日期往后增加一天,负数减一天

3. 获取某个日期是星期几

Calendar now = Calendar.getInstance();
//一周第一天是否为星期天
boolean isFirstSunday = (now.getFirstDayOfWeek() == Calendar.SUNDAY);

//获取周几
int weekDay = now.get(Calendar.DAY_OF_WEEK);

//若一周第一天为星期天,则-1
if(isFirstSunday){
	weekDay = weekDay - 1;
}
if(weekDay == 0){
	weekDay = 7;
}
//打印周几
System.out.println(weekDay);

4. 计算指定日期加上指定天数后的日期

Date endTime = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.sdf(endTime));
Calendar calendar = Calendar.getInstance();
calendar.setTime(endTime);
calendar.add(Calendar.DATE,10);
System.out.println(sdf.sdf(calendar.getTime()));

5. 计算两个日期的天数差

/**
     * date2比date1多的天数
     *
     * @param date1 date1
     * @param date2 date2
     * @return 天数差
 */
    public static int calcDayOffset(Date date1, Date date2) {
        Calendar cal1 = Calendar.getInstance();
        cal1.setTime(date1);
        Calendar cal2 = Calendar.getInstance();
        cal2.setTime(date2);
        int day1 = cal1.get(Calendar.DAY_OF_YEAR);
        int day2 = cal2.get(Calendar.DAY_OF_YEAR);
        int year1 = cal1.get(Calendar.YEAR);
        int year2 = cal2.get(Calendar.YEAR);
        if (year1 != year2) {  //同一年
            int timeDistance = 0;
            for (int i = year1; i < year2; i++) {
                if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {  //闰年
                    timeDistance += 366;
                } else {  //不是闰年
                    timeDistance += 365;
                }
            }
            return timeDistance + (day2 - day1);
        } else { //不同年
            return day2 - day1;
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值