国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕精品一区二区精品 | 久久久久久久久久久亚洲 | 亚洲欧美视频 | 国产精品久久久久久中文字 | 久久精品国产视频 | 青青草一区二区 | 久久久久久国产 | 午夜影院在线观看 | 欧美精品在线看 | 免费不卡视频 | 亚洲中午字幕 | 天天干天天插 | av成人毛片 | 国产精品成人在线观看 | 欧美一级高清免费 | 日韩电影一区 | 日韩欧美一区二区三区免费观看 | 午夜成人免费影院 | 北条麻妃99 | 国产免费天天看高清影视在线 | 国产精品成人3p一区二区三区 | 中文字字幕一区二区三区四区五区 | 韩日中文字幕 | 久久综合九九 | 欧美一区永久视频免费观看 | 亚洲在看| 国产精品视频区 | 国产精品久久久久久 | 欧美视频精品 | 一级片免费在线观看视频 | 毛片网站在线观看 | 91在线观看免费观看 | 欧美91在线 | 国产日韩欧美一区二区 | 一区二区三区高清不卡 | 狠狠爱网站 | 曰韩在线 | 日韩精品在线免费视频 | 激情久久久 | 国产欧美日韩视频 | 亚洲视频在线观看视频 |