激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java時間日期使用與查詢代碼詳解

java時間日期使用與查詢代碼詳解

2021-02-23 11:33adayabetter Java教程

這篇文章主要介紹了java時間日期使用與查詢代碼詳解,具有一定借鑒價值,需要的朋友可以參考下。

只要格式正確,直接比較字符串就可以了呀,精確到秒的也一樣

java" id="highlighter_301180">
?
1
2
3
String  s1  =  "2003-12-12  11:30:24"
 String  s2  =  "2004-04-01  13:31:40"
 int  res  =  s1.compareTo(s2);

日期

?
1
2
3
4
5
6
7
8
SimpleDateFormat  df  =  new  SimpleDateFormat("yyyy-MM-dd  HH:mm:ss"); 
 Date  begin=df.parse("2004-01-02  11:30:24"); 
 Date  end  =  df.parse("2004-03-26  13:31:40"); 
 long  between=(end.getTime()-begin.getTime())/1000;//除以1000是為了轉換成秒 
 int  day=between/(24*3600); 
 int  hour=between%(24*3600)/3600
 int  minute=between%3600/60
 int  second=between%60;

經常用到時間日期類,所以就將常用的日期方法和屬性都歸納總結如下,方便大家查找

1.計算某一月份的最大天數

?
1
2
3
4
5
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year);
time.set(Calendar.MONTH,i-1);//注意,Calendar對象默認一月為0
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天數

注:在使用set方法之前,最好先clear一下,否則很多信息會繼承自系統當前時間

2.Calendar和Date的轉化

(1) Calendar轉化為Date

?
1
2
Calendar cal=Calendar.getInstance();
Date date=cal.getTime();

(2) Date轉化為Calendar

?
1
2
3
Date date=new Date();
Calendar cal=Calendar.getInstance();
cal.setTime(date);

3.格式化輸出日期時間

?
1
2
3
Date date=new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(df.format(date));

4.計算一年中的第幾星期

(1)計算某一天是一年中的第幾星期

?
1
2
3
4
5
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 9);
cal.set(Calendar.DAY_OF_MONTH, 3);
int weekno=cal.get(Calendar.WEEK_OF_YEAR);

(2)計算一年中的第幾星期是幾號

?
1
2
3
4
5
6
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.WEEK_OF_YEAR, 1);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println(df.format(cal.getTime()));

輸出:

?
1
2006-01-02

5.add()和roll()的用法
(1)add()方法

?
1
2
3
4
5
6
7
8
9
10
11
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 9);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.add(Calendar.DATE, -4);
Date date=cal.getTime();
System.out.println(df.format(date));
cal.add(Calendar.DATE, 4);
date=cal.getTime();
System.out.println(df.format(date));

輸出:
2006-08-30
2006-10-03

(2)roll方法

?
1
2
3
4
5
6
7
8
9
cal.set(Calendar.YEAR, 2006);
cal.set(Calendar.MONTH, 9);
cal.set(Calendar.DAY_OF_MONTH, 3);
cal.roll(Calendar.DATE, -4);
date=cal.getTime();
System.out.println(df.format(date));
cal.roll(Calendar.DATE, 4);
date=cal.getTime();
System.out.println(df.format(date));

輸出:

2006-10-29

2006-10-03

可見,roll()方法在本月內循環,一般使用add()方法;

6.計算兩個任意時間中間的間隔天數

(1)傳進Calendar對象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/** */
/**計算兩個時間之間相隔天數
* @param startday 開始時間
* @param endday 結束時間
* @return
*/
public int getIntervalDays(Calendar startday,Calendar endday)...{
    //確保startday在endday之前
    if(startday.after(endday))...{
        Calendar cal=startday;
        startday=endday;
        endday=cal;
    }
    //分別得到兩個時間的毫秒數
    long sl=startday.getTimeInMillis();
    long el=endday.getTimeInMillis();
    long ei=el-sl;
    //根據毫秒數計算間隔天數
    return (int)(ei/(1000*60*60*24));
}

(2)傳進Date對象

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/** */
/**計算兩個時間之間相隔天數
* @param startday 開始時間
* @param endday 結束時間
* @return
*/
public int getIntervalDays(Date startday,Date endday)...{
    //確保startday在endday之前
    if(startday.after(endday))...{
        Date cal=startday;
        startday=endday;
        endday=cal;
    }
    //分別得到兩個時間的毫秒數
    long sl=startday.getTime();
    long el=endday.getTime();
    long ei=el-sl;
    //根據毫秒數計算間隔天數
    return (int)(ei/(1000*60*60*24));
}

同理,可以用相同的方法計算出任意兩個時間相隔的小時數,分鐘數,秒鐘數等
注:以上方法是完全按時間計算,有時并不能令人滿意,如:

?
1
2
startday="2006-10-11 20:00:00"
endday="2006-10-12 8:00:00"

計算結果為0,但是我們也許相讓計算結果變為1,此時可以用如下方法實現:
在傳參之前,先設定endday的時間,如:

?
1
2
3
4
endday.set(Calendar.HOUR_OF_DAY, 23);
endday.set(Calendar.MINUTE, 59);
endday.set(Calendar.SECOND, 59);
endday.set(Calendar.MILLISECOND, 59);

這樣再傳進去startday,endday,則結果就如我們所愿了。不過,如果嫌以上方法麻煩,可以參考以下方法:
(3)改進精確計算相隔天數的方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public int getDaysBetween (Calendar d1, Calendar d2) ...{
    if (d1.after(d2)) ...{
        // swap dates so that d1 is start and d2 is end
        java.util.Calendar swap = d1;
        d1 = d2;
        d2 = swap;
    }
    int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
    int y2 = d2.get(Calendar.YEAR);
    if (d1.get(Calendar.YEAR) != y2) ...{
        d1 = (Calendar) d1.clone();
        do ...{
            days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);
            //得到當年的實際天數
            d1.add(Calendar.YEAR, 1);
        }
        while (d1.get(Calendar.YEAR) != y2);
    }
    return days;
}

獲取系統當前時間:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public static String getSystemTime(){
    Date date=new Date();
    SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return df.format(date);
}
//字符串轉化成時間類型(字符串可以是任意類型,只要和SimpleDateFormat中的格式一致即可)
java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);
java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mDateTime1=formatter.format(d);
//當前時間
Calendar cal = Calendar.getInstance();
// SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss G E D F w W a E F");
String mDateTime=formatter.format(cal.getTime());
//1年前日期
java.util.Date myDate=new java.util.Date();
long myTime=(myDate.getTime()/1000)-60*60*24*365;
myDate.setTime(myTime*1000);
String mDate=formatter.format(myDate);
//明天日期
myDate=new java.util.Date();
myTime=(myDate.getTime()/1000)+60*60*24;
myDate.setTime(myTime*1000);
mDate=formatter.format(myDate);
//兩個時間之間的天數
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date= myFormatter.parse("2003-05-1");
java.util.Date mydate= myFormatter.parse("1899-12-30");
long day=(date.getTime()-mydate.getTime())/(24*60*60*1000);
//加半小時
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date date1 = format.parse("2002-02-28 23:16:00");
long Time=(date1.getTime()/1000)+60*30;
date1.setTime(Time*1000);
String mydate1=formatter.format(date1);
//年月周求日期
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
java.util.Date date2= formatter2.parse("2003-05 5 星期五");
SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
String mydate2=formatter3.format(date2);
//求是星期幾
mydate= myFormatter.parse("2001-1-1");
SimpleDateFormat formatter4 = new SimpleDateFormat("E");
String mydate3=formatter4.format(mydate);

在開發web應用中,針對不同的數據庫日期類型,我們需要在我們的程序中對日期類型做各種不同的轉換。若對應數據庫數據是oracle的Date類型,即只需要年月日的,可以選擇使用java.sql.Date類型,若對應的是MSsqlserver數據庫的DateTime類型,即需要年月日時分秒的,選擇java.sql.Timestamp類型

你可以使用dateFormat定義時間日期的格式,轉一個字符串即可

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
package personal.jessica;
import java.util.Date;
import java.util.Calendar;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Locale;
class Datetest{
    /**
*method 將字符串類型的日期轉換為一個timestamp(時間戳記java.sql.Timestamp)
*@param dateString 需要轉換為timestamp的字符串
*@return dataTime timestamp
*/
    public final static java.sql.Timestamp string2Time(String dateString) 
    throws java.text.ParseException {
        DateFormat dateFormat;
        dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS", Locale.ENGLISH);
        //設定格式 
        //dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH); 
        dateFormat.setLenient(false);
        java.util.Date timeDate = dateFormat.parse(dateString);
        //util類型 
        java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());
        //Timestamp類型,timeDate.getTime()返回一個long型 
        return dateTime;
    }
    /**
*method 將字符串類型的日期轉換為一個Date(java.sql.Date)
*@param dateString 需要轉換為Date的字符串
*@return dataTime Date
*/
    public final static java.sql.Date string2Date(String dateString) 
    throws java.lang.Exception {
        DateFormat dateFormat;
        dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
        dateFormat.setLenient(false);
        java.util.Date timeDate = dateFormat.parse(dateString);
        //util類型 
        java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());
        //sql類型 
        return dateTime;
    }
    public static void main(String[] args){
        Date da = new Date();
        //注意:這個地方da.getTime()得到的是一個long型的值 
        System.out.println(da.getTime());
        //由日期date轉換為timestamp 
        //第一種方法:使用new Timestamp(long) 
        Timestamp t = new Timestamp(new Date().getTime());
        System.out.println(t);
        //第二種方法:使用Timestamp(int year,int month,int date,int hour,int minute,int second,int nano) 
        Timestamp tt = new Timestamp(Calendar.getInstance().get( 
        Calendar.YEAR) - 1900, Calendar.getInstance().get( 
        Calendar.MONTH), Calendar.getInstance().get( 
        Calendar.DATE), Calendar.getInstance().get( 
        Calendar.HOUR), Calendar.getInstance().get( 
        Calendar.MINUTE), Calendar.getInstance().get( 
        Calendar.SECOND), 0);
        System.out.println(tt);
        try {
            String sToDate = "2005-8-18";
            //用于轉換成java.sql.Date的字符串 
            String sToTimestamp = "2005-8-18 14:21:12.123";
            //用于轉換成java.sql.Timestamp的字符串 
            Date date1 = string2Date(sToDate);
            Timestamp date2 = string2Time(sToTimestamp);
            System.out.println("Date:"+date1.toString());
            //結果顯示 
            System.out.println("Timestamp:"+date2.toString());
            //結果顯示
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
}

下面是例子:

Java代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package test;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Hashtable;
import javax.swing.JOptionPane;
public class Test2{
    public static Boolean isdate(String s){
        String a[]=s.split("-");
        Boolean flg=true;
        if(!(Integer.parseint(a[0])>=1950 && Integer.parseint(a[0])<=2050)){
            flg=false;
        }
        return flg;
    }
    public static Boolean checkDate(String s){
        Boolean ret = true;
        try{
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            ret = df.format(df.parse(s)).equals(s);
        }
        catch(ParseException e){
            ret = false;
        }
        return ret;
    }
    public Object dateinfo(String s){
        String a[]=s.split("-",2);
        Hashtable fest =new Hashtable();
        fest.put("01-01","元旦節");
        fest.put("02-14","情人節");
        fest.put("03-12","植樹節");
        fest.put("03-15","消費者節");
        fest.put("04-01","愚人節");
        fest.put("04-05","清明節");
        fest.put("05-01","勞動節");
        fest.put("06-01","兒童節");
        fest.put("07-01","建黨節");
        fest.put("08-01","建軍節");
        fest.put("09-10","教師節");
        fest.put("10-01","國慶節");
        fest.put("12-25","圣誕節");
        if(fest.containsKey(a[1])){
            return fest.get(a[1]);
        } else{
            return "無節日";
        }
    }
    public String xingzuo(Date s){
        Calendar cal = Calendar.getInstance();
        cal.setTime(s);
        String xingzuo="無";
        int day=cal.get(Calendar.DAY_OF_YEAR);
        if((cal.get(Calendar.YEAR)%4==0)&&(cal.get(Calendar.YEAR)%100!=0)||(cal.get(Calendar.YEAR)%400==0)){
            if((day>=1 &&day<=19)||(day>=357&&day<=366)){
                xingzuo= "魔蝎座";
            } else if(day>=20 &&day<=49){
                xingzuo= "水瓶座";
            } else if(day>=50 &&day<=80){
                xingzuo= "雙魚座";
            } else if(day>=81 &&day<=110){
                xingzuo= "白羊座";
            } else if(day>=111 &&day<=141){
                xingzuo= "金牛座";
            } else if(day>=142 &&day<=173){
                xingzuo= "雙子座";
            } else if(day>=174 &&day<=203){
                xingzuo= "巨蟹座";
            } else if(day>=204 &&day<=235){
                xingzuo= "獅子座";
            } else if(day>=236 &&day<=266){
                xingzuo= "處女座";
            } else if(day>=267 &&day<=296){
                xingzuo= "天秤座";
            } else if(day>=297 &&day<=326){
                xingzuo= "天蝎座";
            } else if(day>=327 &&day<=356){
                xingzuo= "射手座";
            }
        } else{
            if((day>=1 &&day<=19)||(day>=357&&day<=366)){
                xingzuo= "魔蝎座";
            } else if(day>=20 &&day<=48){
                xingzuo= "水瓶座";
            } else if(day>=49 &&day<=79){
                xingzuo= "雙魚座";
            } else if(day>=80 &&day<=109){
                xingzuo= "白羊座";
            } else if(day>=110 &&day<=140){
                xingzuo= "金牛座";
            } else if(day>=141 &&day<=172){
                xingzuo= "雙子座";
            } else if(day>=173 &&day<=202){
                xingzuo= "巨蟹座";
            } else if(day>=203 &&day<=234){
                xingzuo= "獅子座";
            } else if(day>=235 &&day<=265){
                xingzuo= "處女座";
            } else if(day>=266 &&day<=295){
                xingzuo= "天秤座";
            } else if(day>=296 &&day<=325){
                xingzuo= "天蝎座";
            } else if(day>=326 &&day<=355){
                xingzuo= "射手座";
            }
        }
        return xingzuo;
    }
    public Date parseDate(String s){
        SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date date3 = bartDateFormat.parse(s);
            date3=bartDateFormat.parse(s);
            return date3;
        }
        catch (Exception ex) {
            return null;
        }
    }
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        Test2 test2=new Test2();
        String date1=JOptionPane.showInputDialog("請你輸入日期,格式如2000-10-15");
        while(!(Test2.checkDate(date1)&&Test2.isdate(date1))){
            date1=JOptionPane.showInputDialog("請你輸入日期,格式如2000-10-15");
        }
        SimpleDateFormat bartDateFormat1 = new SimpleDateFormat("yyyy,MM,dd,EEEE");
        SimpleDateFormat bartDateFormat2 = new SimpleDateFormat("yyyy-MM-dd");
        Date date2=test2.parseDate(date1);
        String festinfo=(String)test2.dateinfo(date1);
        System.out.println(bartDateFormat1.format(date2) +","+ festinfo+","+ test2.xingzuo(date2));
        String day=JOptionPane.showInputDialog("請你輸入要查詢N天后的日期信息");
        cal.setTime(date2);
        cal.add(Calendar.DATE, Integer.parseint(day));
        String date5=bartDateFormat2.format(cal.getTime());
        festinfo=(String)test2.dateinfo(date5);
        System.out.println(bartDateFormat1.format(cal.getTime())+","+ festinfo+","+ test2.xingzuo(cal.getTime()));
    }
}

總結

以上就是本文關于java時間日期使用與查詢代碼詳解的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/adayabetter/article/details/44596597

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久草在线免费资源站 | 欧美视频99 | 91高清免费| 黄色高清av | 欧美xxxxx视频 | 曰批全过程120分钟免费69 | 欧美性生话视频 | 欧美日韩一 | 特一级毛片| 久久爽久久爽久久av东京爽 | 国产精品免费一区二区三区都可以 | 欧美一级做 | 欧美a黄| 中文字幕在线永久视频 | 国产美女视频免费 | 青青操国产 | 一级毛片高清 | 一区二区三区在线视频观看58 | 天天看天天摸天天操 | av免费av| 免费一级毛片在线播放视频老 | 久久伊人国产精品 | 亚洲不卡| 亚洲一区第一页 | 一级黄色片武则天 | 12av毛片| 久久久久久久一区二区三区 | 深夜福利视频免费观看 | 久久久精品视频国产 | 国产日韩三区 | 美女一级视频 | 精品国产一区二区三区四区阿崩 | 国产资源在线观看 | 中文字幕免费在线观看视频 | 婷婷久久综合九色综合色多多蜜臀 | 精品亚洲夜色av98在线观看 | 日日做夜夜操 | 亚洲国产精品二区 | 一级黄色欧美 | 一级片观看 | 精品一区二区在线视频 |