fs-danaus
2024-08-09 7204e3dff0490732e861ccd1338e3e3c31d768c6
提交 | 用户 | age
a6a76f 1 package com.yc.utils;
F 2
3
4 import java.text.DateFormat;
5 import java.text.ParseException;
6 import java.text.SimpleDateFormat;
7 import java.time.LocalDate;
8 import java.time.format.DateTimeFormatter;
9 import java.util.Calendar;
10 import java.util.Date;
11 import java.util.Locale;
12 import java.util.regex.Pattern;
13 /**
14  * 日期操作
15  * 
16  * **/
17 public class DateUtil {
18     public static String dateFormatStr = "yyyy-MM-dd HH:mm:ss" ;
19     /**
20      * 格式化时间
21      * @param time 毫秒数
22      * @param format 日期格式,传null则默认为yyyy-MM-dd HH:mm:ss
23      * **/
24     public static String fromatDate(long time,String format){
25     if(format==null) format="yyyy-MM-dd HH:mm:ss";
26     Calendar c=Calendar.getInstance();
27       c.setTimeInMillis(time);
28       SimpleDateFormat sim=new SimpleDateFormat(format);
29       return sim.format(c.getTime()); 
30     }
31     /**
32      * 计算相差天数
33      * 
34      * */
35     public static int daysBetween(Date now, Date returnDate) {
36         Calendar cNow = Calendar.getInstance();
37         Calendar cReturnDate = Calendar.getInstance();
38         cNow.setTime(now);
39         cReturnDate.setTime(returnDate);
40         setTimeToMidnight(cNow);
41         setTimeToMidnight(cReturnDate);
42         long todayMs = cNow.getTimeInMillis();
43         long returnMs = cReturnDate.getTimeInMillis();
44         long intervalMs = todayMs - returnMs;
45         return millisecondsToDays(intervalMs);
46     }
47     /**
48      * 计算相差天数
49      * 
50      * */
51     public static int day2one(String returnDate) {
52        
53         SimpleDateFormat sim=new SimpleDateFormat("yyyy-MM-dd");
54         try {
55            Date vaiDate= sim.parse(returnDate);
56            Date now =new Date();
57        return vaiDate.compareTo(now);
58     } catch (ParseException e) {
59         e.printStackTrace();
60         return -1;
61     }
62       
63     }
64     private static int millisecondsToDays(long intervalMs) {
65         return (int) (intervalMs / (1000 * 86400));
66     }
67
68     private static void setTimeToMidnight(Calendar calendar) {
69         calendar.set(Calendar.HOUR_OF_DAY, 0);
70         calendar.set(Calendar.MINUTE, 0);
71         calendar.set(Calendar.SECOND, 0);
72     }
73       public static void main(String[] args)
74       {
75          // SimpleDateFormat sdf=new SimpleDateFormat("yy-MM-dd HH:mm:ss",Locale.getDefault());
76          // System.out.print(DateUtil.getMonth(0));
77           System.out.println(DateUtil.DatePlus("2014-9-1",2));
78       }
79         public static String formatDate(String date,String fromt){
80              if(fromt==null) fromt="yyyy-mm-dd";
b7dee0 81             SimpleDateFormat sim=new SimpleDateFormat(fromt,Locale.SIMPLIFIED_CHINESE);
a6a76f 82             Date d=null;
F 83             try {
84                 
85                 d = sim.parse(date);
86             } catch (ParseException e) {
87                 e.printStackTrace();
88             }
b7dee0 89             return sim.format(d);//只返回日期部分
a6a76f 90         }
e0b42d 91     public static String formatDateTime(String date,String format){
F 92         if(format==null) format="yyyy-MM-dd HH:mm:ss";
93         SimpleDateFormat sim=new SimpleDateFormat(format);
94         Date d=null;
95         try {
a6a76f 96
e0b42d 97             d = sim.parse(date);
F 98         } catch (ParseException e) {
99             e.printStackTrace();
100         }
b7dee0 101         return sim.format(d);//只返回日期+时间部分
e0b42d 102     }
a6a76f 103     /**
F 104      *
105      * @param dateStr  --只能接收日期,
106      * @param days
107      * @return
108      */
109         public  static  String DatePlus(String dateStr,int days){
110             LocalDate date=null;
111             try {
112                 date = LocalDate.parse(dateStr);
113             }catch (Exception e){
114                 //月份前面没有0
115                 try {
116                     date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-M-dd"));
117
118                 }catch (Exception e1){
119                     try {
120                         date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-M-d"));
121                     }catch (Exception e2){
122                         try {
123                             date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-d"));
124                         }catch (Exception e3){
125                             date = LocalDate.parse(dateStr, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
126                         }
127                     }
128                 }
129             }
130             return date.plusDays(days).format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
131         }
132     public static String toDayDate(){
133         Date today=Calendar.getInstance().getTime();//返回当前中国地区的日期
134         String parnt = "yyyy-MM-dd";
135         SimpleDateFormat simpleDateFormat=new SimpleDateFormat(parnt);
136         return simpleDateFormat.format(today);//只返回日期部分
137     }
138     public static String toDayTime(){
139         Date today=Calendar.getInstance().getTime();//返回当前中国地区的时间
140         String parnt = "HH:mm:ss";
141         SimpleDateFormat simpleDateFormat=new SimpleDateFormat(parnt);
142         return simpleDateFormat.format(today);//只返回时间部分
143     }
144     public static String toDay(){
145         Date today=Calendar.getInstance().getTime();//返回当前中国地区的日期+时间
146         String parnt = "yyyy-MM-dd HH:mm:ss";
147         SimpleDateFormat simpleDateFormat=new SimpleDateFormat(parnt);
148         return simpleDateFormat.format(today);//只返回时间部分
149     }
150     public static int getDay(int i){
151         Calendar cal=Calendar.getInstance(Locale.CHINA);//返回当前中国地区的日期时间
152         cal.set(Calendar.DAY_OF_MONTH,cal.get(Calendar.DAY_OF_MONTH)+i);//
153         return  cal.get(Calendar.DATE);//只日期中的天部分
154     }
155     public static int getMonth(int i){
156         Calendar cal=Calendar.getInstance(Locale.CHINA);//返回当前中国地区的日期时间
157         cal.set(Calendar.MONTH,cal.get(Calendar.MONTH)+i+1);//
158         return  cal.get(Calendar.MONTH);//只日期中的月部分
159     }
160     public static int getYear(int i){
161         Calendar cal=Calendar.getInstance(Locale.CHINA);//返回当前中国地区的日期时间
162         cal.set(Calendar.YEAR,cal.get(Calendar.YEAR)+i);//
163         return  cal.get(Calendar.YEAR);//只日期中的年部分
164     }
165     
166     public static boolean isDate(String d){//判断字符串是否为日期
167         
168         Pattern p = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\-\\s]?((((0?" +"[13578])|(1[02]))[\\-\\-\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))" +"|(((0?[469])|(11))[\\-\\-\\s]?((0?[1-9])|([1-2][0-9])|(30)))|" +"(0?2[\\-\\-\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][12" +"35679])|([13579][01345789]))[\\-\\-\\s]?((((0?[13578])|(1[02]))" +"[\\-\\-\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))" +"[\\-\\-\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\-\\s]?((0?[" +"1-9])|(1[0-9])|(2[0-8]))))))"); 
169         return  p.matcher(d).matches();
170     }
171     /*  
172       * 判断是否为浮点数,包括double和float  
173       * @param str 传入的字符串  
174       * @return 是浮点数返回true,否则返回false  
175     */    
176       public static boolean isDouble(String str) {    
177         Pattern pattern = Pattern.compile("^[-\\+]?[.\\d]*$");    
178         return pattern.matcher(str).matches();    
179       }
180 }