summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/utils/DateUtility.java
blob: 6e3b5694314e3a2cdd862f0a29523440b443dba9 (plain)
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
package com.c2kernel.utils;
import com.c2kernel.common.GTimeStamp;
/**
 * @version $Revision: 1.8 $ $Date: 2005/05/10 15:14:55 $
 * @author $Author: abranson $
 */
public class DateUtility
{
	public static GTimeStamp setToNow(GTimeStamp date)
	{
		java.util.Calendar now = java.util.Calendar.getInstance();
		date.mYear = now.get(java.util.Calendar.YEAR);
		date.mMonth = now.get(java.util.Calendar.MONTH) + 1;
		date.mDay = now.get(java.util.Calendar.DAY_OF_MONTH);
		date.mHour = now.get(java.util.Calendar.HOUR_OF_DAY);
		date.mMinute = now.get(java.util.Calendar.MINUTE);
		date.mSecond = now.get(java.util.Calendar.SECOND);
		date.mTimeOffset = now.get(java.util.Calendar.ZONE_OFFSET);
		return date;
	}

	public static String getSQLFormat(GTimeStamp timeStamp)
	{
		StringBuffer time = new StringBuffer().append(timeStamp.mYear).append("-");
		if (timeStamp.mMonth < 10)
			time.append("0");
		time.append(timeStamp.mMonth).append("-");
		if (timeStamp.mDay < 10)
			time.append("0");
		time.append(timeStamp.mDay).append(" ");
		if (timeStamp.mHour < 10)
			time.append("0");
		time.append(timeStamp.mHour).append(":");
		if (timeStamp.mMinute < 10)
			time.append("0");
		time.append(timeStamp.mMinute).append(":");
		if (timeStamp.mSecond < 10)
			time.append("0");
		time.append(timeStamp.mSecond);
		return time.toString();
	}
    
    public static int getNbDayInYear(GTimeStamp date)
    {
        int centuary = date.mYear / 100;
        int cdivby4 = centuary / 4;
        int ydivby4 = date.mYear / 4;
        if (centuary * 100 - date.mYear == 0)
        {
            if (centuary == cdivby4 * 4)
                return 366;
            else
                return 365;
        }
        else if (date.mYear == ydivby4 * 4)
            return 366;
        else
            return 365;
    }
    public static int getNbDayInMonth(GTimeStamp date)
    {
        switch (date.mMonth)
        {
            case 2 :
                if (getNbDayInYear(date) == 365)
                    return 28;
                else
                    return 29;
            case 4 :
                return 30;
            case 6 :
                return 30;
            case 9 :
                return 30;
            case 11 :
                return 30;
            default :
                return 31;
        }
    }
    
    public static long diff(GTimeStamp date1, GTimeStamp date2)
    {
        GTimeStamp tmp = new GTimeStamp(date1.mYear, date1.mMonth, date1.mDay, date1.mHour, date1.mMinute, date1.mSecond, date1.mTimeOffset);
        while (tmp.mYear - date2.mYear < 0)
        {
            while (tmp.mMonth < 13)
            {
                tmp.mDay = tmp.mDay - getNbDayInMonth(tmp);
                tmp.mMonth++;
            }
            tmp.mMonth = 1;
            tmp.mYear++;
        }
        while (tmp.mYear - date2.mYear > 0)
        {
            while (tmp.mMonth > 1)
            {
                tmp.mMonth--;
                tmp.mDay = tmp.mDay + getNbDayInMonth(tmp);
            }
            tmp.mMonth = 12;
            tmp.mDay = tmp.mDay + getNbDayInMonth(tmp);
            tmp.mYear--;
        }
        while (tmp.mMonth - date2.mMonth < 0)
        {
            tmp.mDay = tmp.mDay - getNbDayInMonth(tmp);
            tmp.mMonth++;
        }
        while (tmp.mMonth - date2.mMonth > 0)
        {
            tmp.mMonth--;
            tmp.mDay = tmp.mDay + getNbDayInMonth(tmp);
        }
        return (((tmp.mDay - date2.mDay) * 24 + tmp.mHour - date2.mHour) * 60 + tmp.mMinute - date2.mMinute) * 60 + tmp.mSecond - date2.mSecond;
    }    
}