java中日期常用转换处理

1.String转Date

    private void StringtoDate() throws ParseException {
        String dateStr = "2018-08-07 16:24:35";
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = sdf.parse(dateStr);
    }

2.Date转String

    private void DatetoString() throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        String dateStr = sdf.format(date);
    }

3.时间戳转Date

    private void timeStamptoDate() throws ParseException {
        long timeStamp = System.currentTimeMillis();
        Date date = new Date();
    }

4.Date转时间戳

    private void DatetotimeStamp() throws ParseException {
        Date date = new Date();
        long timeStamp = date.getTime();
    }

在date和时间戳互相转换的过程中,并不是在转换,时间戳是Date类的一个属性,可以把转换理解为拿和调用构造,这点在Date的源码中可以看出。

public class Date
    implements java.io.Serializable, Cloneable, Comparable<Date>
{
    private static final BaseCalendar gcal =
                                CalendarSystem.getGregorianCalendar();
    private static BaseCalendar jcal;
	//此处为时间戳保存的变量,使用了transient 关键字防止此变量被序列化
    private transient long fastTime;
    ..............
	//无参构造,当我们调用new Date()时,其实Date类自动调用了其有参构造,并传输了System.currentTimeMillis()系统时间ms为参数
    public Date() {
        this(System.currentTimeMillis());
    }
    //有参构造 这里是把参数赋值,完成实例化
     public Date(long date) {
        fastTime = date;
    }
    ...............

5.处理获取某n天前/后的时间

  /**
     * 处理加减天数
     * 
     * @param strDate 需要处理的时间集合
     * @param day     需要增减的天数
     */
    private List<String> handleDate(List<String> strDate, int day) {
        List<String> formatDateList = new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        Calendar calendar = Calendar.getInstance();
        try {
            for (String date : strDate) {
                calendar.setTime(sdf.parse(date));
                calendar.add(Calendar.DATE, day);
                formatDateList.add(sdf.format(calendar.getTime()));
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return formatDateList;
    }

6.处理多个时间段间隔某个时段的时间点

    /**
     * 处理时间段内的时间点
     * 
     * @param each_time 时间间隔(分钟)
     * @param time      时间段中间用,隔开2018-08-08 15:04,2018-08-08 18:04
     * @return
     */
    public List<String> handleTime(int each_time, String... time) {
        List<String> formatDateList = new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        try {
            for (String times : time) {
                String timer[] = times.split("-");
                long startTime = sdf.parse(timer[0]).getTime();
                Long endTime = sdf.parse(timer[1]).getTime();
                while (startTime <= endTime) {
                    formatDateList.add(sdf.format(new Date(startTime)));
                    startTime += 60 * 1000 * each_time;
                }
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return formatDateList;
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值