TimeUtil,java1.8时间转换

简介: TimeUtil,java1.8时间转换
package com.tian.mvc01.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class TimeUtils {

    /**
     * 计算时间差值(jdk自带)
     * @param args
     */
    public static void main(String[] args) {

        TimeUtils obj = new TimeUtils();
        SimpleDateFormat simpleDateFormat =
                new SimpleDateFormat("dd/M/yyyy hh:mm:ss");
        try {
            Date date1 = simpleDateFormat.parse("10/10/2013 11:30:00");
            Date date2 = simpleDateFormat.parse("10/10/2013 20:00:00");

            obj.printDifference(date1, date2);

        } catch (ParseException e) {
            e.printStackTrace();
        }

    }

    //1 minute = 60 seconds
    //1 hour = 60 x 60 = 3600
    //1 day = 3600 x 24 = 86400
    public void printDifference(Date startDate, Date endDate){

        //milliseconds
        long different = endDate.getTime() - startDate.getTime();

        System.out.println("startDate : " + startDate);
        System.out.println("endDate : "+ endDate);
        System.out.println("different : " + different);

        long secondsInMilli = 1000;
        long minutesInMilli = secondsInMilli * 60;
        long hoursInMilli = minutesInMilli * 60;
        long daysInMilli = hoursInMilli * 24;

        long elapsedDays = different / daysInMilli;
        different = different % daysInMilli;

        long elapsedHours = different / hoursInMilli;
        different = different % hoursInMilli;

        long elapsedMinutes = different / minutesInMilli;
        different = different % minutesInMilli;

        long elapsedSeconds = different / secondsInMilli;

        System.out.printf(
                "%d days, %d hours, %d minutes, %d seconds%n",
                elapsedDays,
                elapsedHours, elapsedMinutes, elapsedSeconds);

    }

    /**
     * 获取时间字符串之间的小时差
     * @param start
     * @param end
     * @return
     */
    public static double getHours(String start,String end){
        DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
        LocalDateTime startTime = LocalDateTime.parse(start,df);
        LocalDateTime endTime = LocalDateTime.parse(end,df);
        Duration duration = Duration.between(startTime,endTime);
        long minutes = duration.toMinutes();
        long hours = duration.toHours();
        long a = minutes%60;
        double as = 0.0;
        if (a>=30||a<=-30){
            as= hours+0.5;
        }else if (a==0){
            as=hours;
        }
        return as;
    }
    /**
     * 得到时间段内的每一天
     * @param startTime
     * @param endTime
     * @return
     * @throws ParseException
     */
    public static List<Date> getEveryDay(String startTime, String endTime) throws ParseException {
        List<Date> list = new ArrayList<>();
        Date date0 = new SimpleDateFormat("yyyy-MM-dd").parse(startTime);
        Date date1 = new SimpleDateFormat("yyyy-MM-dd").parse(endTime);
        Calendar cal = Calendar.getInstance();
        cal.setTime(date0);
        while(cal.getTime().compareTo(date1)<=0){
            Date time = cal.getTime();
            list.add(time);
            cal.add(Calendar.DAY_OF_MONTH,1);
        }
        return list;
    }

    // 01. java.util.Date --> java.time.LocalDateTime
    public void UDateToLocalDateTime() {
        java.util.Date date = new java.util.Date();
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
    }

    // 02. java.util.Date --> java.time.LocalDate
    public void UDateToLocalDate() {
        java.util.Date date = new java.util.Date();
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        LocalDate localDate = localDateTime.toLocalDate();
    }

    // 03. java.util.Date --> java.time.LocalTime
    public void UDateToLocalTime() {
        java.util.Date date = new java.util.Date();
        Instant instant = date.toInstant();
        ZoneId zone = ZoneId.systemDefault();
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
        LocalTime localTime = localDateTime.toLocalTime();
    }


    // 04. java.time.LocalDateTime --> java.util.Date
    public void LocalDateTimeToUdate() {
        LocalDateTime localDateTime = LocalDateTime.now();
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        java.util.Date date = Date.from(instant);
    }


    // 05. java.time.LocalDate --> java.util.Date
    public void LocalDateToUdate() {
        LocalDate localDate = LocalDate.now();
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
        java.util.Date date = Date.from(instant);
    }

    // 06. java.time.LocalTime --> java.util.Date
    public void LocalTimeToUdate() {
        LocalTime localTime = LocalTime.now();
        LocalDate localDate = LocalDate.now();
        LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        java.util.Date date = Date.from(instant);
    }
}
目录
相关文章
|
7月前
|
存储 Java 程序员
Java 日期时间
4月更文挑战第17天
|
Java
Java时间类
Java时间类
68 0
|
存储 Java 关系型数据库
Java格式化日期 微秒
本文主要讲述Java日期格式化及格式化日期到微秒
Java格式化日期 微秒
|
Java 程序员
Java 日期时间(二)
Java 日期时间(二)
|
存储 Java 索引
Java 日期时间(一)
Java 日期时间(一)
|
Java
Java 获取当前时间的三种方法
1.通过Util包中的Date获取 2.通过Util包的Calendar 获取 3.通过Util包的Calendar 获取时间,分别获取年月日时分秒
193 0
|
Java
Java中的日期时间
浅浅来学习一下java中的日期时间的相关知识点吧。
181 1
Java中的日期时间
Java获取今天是周几
Java获取今天是周几
Java获取今天是周几
|
存储 安全 Java
11.4 Java 日期和时间类
我们先来看一些基本概念,然后再介绍 Java 的日期和时间 API。关于日期和时间,有一些基本概念,包括时区、时刻、纪元时、年历等。 全球一共有 24 个时区,英国格林尼治是 0 时区,北京是东八区,也就是说格林尼治凌晨 1 点,北京是早上 9 点。0 时区的时间也称为 GMT+0 时间,GMT 是格林尼治标准时间,北京的时间就是 GMT+8:00。 所有计算机系统内部都用一个整数表示时刻,这个整数是距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数。为什么要用这个时间呢?更多的是历史原因。 格林尼治标准时间 1970年1月1日0时0分0秒也被称为 Epoch Time(纪元时)
289 0
|
Java
JAVA 日期格式化
JAVA 日期格式化
250 0
JAVA 日期格式化