java中SimpleDateFormat和Calender的简单用法(有项目实例及代码)

最近做项目用到这两个类,还是很方便的,很想分享给大家。

业务背景介绍

首先说下业务场景,我们做的是oa系统,在创建流程的时候,让用户输入一个时间,然后流程延后启动。那么用户在输入时间的时候,就有两种方式可以选择:

  1. 具体的时间,比如 2020/05/25 08:00:00,流程将会在这个时间节点启动;
  2. 输入增量,比如延后 0年0月3天2时0分0秒;

由于前台往后台传的是json字符串,后台需要做的是解析成具体的时间date,然后以固定的格式返回给用户,比如“2020-05-25,08:00”。

  • 由字符串解析成Date需要用到的是SimpleDateFormatparse()方法;
  • 计算延后的时间用的是Calender类;
  • 将Date以固定格式转成string类型用到的是SimpleDateFormatformat()方法;

SimpleDateFormat函数语法:
y 年
M 月
d 日
h 时 在上午或下午 (1~12)
H 时 在一天中(0~23)
m 分
s 秒

代码实现

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

public class DateService {
    /**
     * 将string类型的时间转换成 Date格式
     *
     * */
    public Date getDateFromDateMsg() throws ParseException {
        String dateMsg = "2020/05/25 08:00:00"; //应该写在传入参数中
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Date parseDate = simpleDateFormat.parse(dateMsg);
        return parseDate;
    }

    /**
     * 计算延后 x年x月x天x时x分x秒 的时间
     *
     * */
    public Date getDateFromIncreMsg() throws ParseException {
        byte year = 0;    //应该写在传入参数中
        byte month = 0;
        byte day = 3;
        byte hour = 2;
        byte minute = 0;
        byte second = 0 ;

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        calendar.add(Calendar.YEAR, year);
        calendar.add(Calendar.MONTH, month);
        calendar.add(Calendar.DAY_OF_MONTH, day);
        calendar.add(Calendar.HOUR_OF_DAY, hour);
        calendar.add(Calendar.MINUTE, minute);
        calendar.add(Calendar.SECOND, second);

        return calendar.getTime();
    }

    /**
     * 返回规整格式后的时间
     * */
    public String dateFormat(Date date) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd,hh:mm");
        String dateFormat = simpleDateFormat.format(date);
        return dateFormat;
    }
}

总结

SimpleDateFormat的parse()方法用来解析时间,format()方法用来将Date类型按照固定格式返回string;
Calender类用于对日期进行操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值