關於 jdk1.8 時間處理的方法(實用)


package avg.position.zhangdi;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Period;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAccessor;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
 
public class DateTimeFormat {
public static void main(String[] args) throws ParseException {
    
    /*java.time包內,有幾個比較重要的組件,Instant(時間戳);LocalDate(日期);LocalDate(時間);LocalDateTime(日期時間);
    ZonedDateTime(帶有區域信息的日期時間,比如中國默認使用的是東八區)。Period(如兩個日期之間相差的天數);Druation(兩個日期時間之間間隔的秒和納秒)。*/
    
    Instant now = Instant.now();
    System.out.println(now.toString());  // 2018-08-06T09:44:13.677Z  (utc時間格式,標准時間格式)
    System.out.println(now.get(ChronoField.MILLI_OF_SECOND)); //毫秒 677
    System.out.println(now.get(ChronoField.MICRO_OF_SECOND)); //微秒 677000
    System.out.println(now.get(ChronoField.NANO_OF_SECOND));  //納秒 677000000
    System.out.println(ZoneId.systemDefault());  // Asia/Shanghai
    LocalDateTime localDateTime = LocalDateTime.ofInstant(now, ZoneId.systemDefault());
    LocalDate localDate = LocalDate.now();  // 
    System.out.println(localDate);  //2018-08-06
    System.out.println(localDateTime); //2018-08-06T17:44:13.677
    
    
    
    
    // 獲得當前日期
    LocalDate localDate1 = LocalDate.now();
    System.out.println(localDate1.toString());
    // 日期加上1天
    LocalDate localDate2 = localDate1.plusDays(1);
    System.out.println(localDate2.toString());
    // 日期加上一周
    LocalDate localDate3 = localDate1.plusWeeks(1);
    System.out.println(localDate3);
    // 計算當前年的第52天是幾月幾號
    System.out.println("今年的第52天 = " + localDate1.withDayOfYear(52));
    
    // 字符串轉日期
    DateTimeFormatter strToDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    TemporalAccessor dateTemporal = strToDateFormatter.parse("2017-01-01 13:00:00");
    LocalDate date = LocalDate.from(dateTemporal);
    System.out.println(date);
    LocalDateTime dateTime = LocalDateTime.parse("2017-01-01 13:00:00", strToDateFormatter);
    System.out.println(dateTime.toString());
    
    
    
    // 格式化日期
    LocalDateTime localDateTime1 = LocalDateTime.now();
    DateTimeFormatter dateToStrFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    String dateStr = dateToStrFormatter.format(localDateTime1);
    System.out.println(dateStr);
    
    // 只處理時間
    LocalTime localTime = LocalTime.now();
    System.out.println("local time = " + localTime);
    System.out.println("plus 12 hours = " + localTime.plusHours(12));
    
    
    
    /*Period
    Period代表的是兩個日期之間的天、月、年數差值,當然,我們也可以直接使用日期中的until方法來完成同樣的效果。*/
    
    LocalDate startDate = LocalDate.now();
    LocalDate endDate = startDate.plusDays(1);
 
    Period period = Period.between(startDate, endDate);
    System.out.println("間隔的天數" + period.getDays());
    System.out.println("間隔的月數:" + period.getMonths());
    System.out.println("間隔的年數:" + period.getYears());
    
    // 直接使用日期類中的方法計算日期間隔
    long days = startDate.until(endDate, ChronoUnit.DAYS);
    System.out.println("間隔的天數:" + days);
    long weeks = startDate.until(endDate, ChronoUnit.WEEKS);
    System.out.println("間隔的周數:" + weeks);
    
    /*Duration表示的是兩個日期時間間隔的秒以及納秒數。*/
    LocalDateTime start = LocalDateTime.now();
    LocalDateTime end = start.plusDays(1);
    Duration duration = Duration.between(start, end);
    System.out.println("間隔的秒數:" + duration.get(ChronoUnit.SECONDS));
    //System.out.println("間隔的毫秒數:" + duration.get(ChronoUnit.MICROS));
    System.out.println("間隔的納秒數:" + duration.get(ChronoUnit.NANOS));
    
    
    ///////////////////////////////
    DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    
    String dateTimeF = LocalDateTime.now().format(fmt); //將當前時間轉換為  2017-10-19 10:25:36
    //將時間裝換為long值      時間戳
    long currentTime = LocalDateTime.parse(dateTimeF,fmt).atZone(ZoneId.of("Asia/Shanghai")).toInstant().toEpochMilli();
    System.out.println("時間戳:"+currentTime);
    //將long轉為格式化時間字符串        
    String timeNow = fmt.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(currentTime),ZoneId.of("Asia/Shanghai")));
    System.out.println("時間:"+timeNow); 
    
   /* Date轉LocalDate:*/
    Date date11 = new Date();
    LocalDate localDate11 = date11.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
    System.out.println(localDate11);
  /*  LocalDate 轉 Date:*/
    LocalDateTime localDateTime22 = LocalDateTime.now();
    ZoneId zoneId = ZoneId.systemDefault();
    ZonedDateTime zdt = localDateTime22.atZone(zoneId);
    Date dateType = Date.from(zdt.toInstant());
    //Date dateType = Date.from(localDateTime22.atZone(ZoneId.systemDefault()).toInstant());
    System.out.println("LocalDateTime = " + localDateTime22);
    System.out.println("Date = " + dateType);
 
    //jdk 1.7
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    SimpleDateFormat sdf2 = new SimpleDateFormat("MM/dd/yyyy");
    Date date33 = sdf.parse("2018-08-08");
    String aaa = sdf2.format(date33);
    System.out.println(aaa);
}
 
 
 
 
    public static List<String> getDateArrayList(String startTime, String endTime) throws ParseException{
           
           List<String> dateArrayList = new ArrayList<String>();  
              SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
               long stime=sdf.parse(startTime).getTime();
               long etime=sdf.parse(endTime).getTime();
               while(stime<=etime){
                String time=sdf.format(new Date(stime));    
                dateArrayList.add(time);
                stime += 24*60*60*1000;  
               }
               return dateArrayList;
           }
            

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM