/*对日期的处理,获取时间,星期,等等
*/
package dk.util;
import java.util.Calendar;
import java.util.Date;
public class date
{
private Date dt;
private int year;
private int month;
private int day;
private int hour;
private int min;
private int sec;
public String chnTime()
{
Date localDate = new Date();
String str = localDate.toLocaleString();
int i = Integer.parseInt(str.substring(str.indexOf(" ") + 1, str.indexOf(":")));
if (i >= 0)
str = "凌晨";
if (i >= 7)
str = "早晨";
if (i >= 9)
str = "上午";
if (i >= 12)
str = "中午";
if (i >= 14)
str = "下午";
if (i >= 18)
str = "晚上";
if (i >= 22)
str = "午夜";
return str;
}
public boolean leapYear(int paramInt)
{
return (paramInt % 4 == 0) && ((paramInt % 100 != 0) || (paramInt % 400 == 0));
}
public boolean leapYear(String paramString)
{
if (!isDate(paramString)) {
return false;
}
int i = Year(paramString);
return (i % 4 == 0) && ((i % 100 != 0) || (i % 400 == 0));
}
public boolean leapYear(Date paramDate)
{
int i = Year(paramDate);
return (i % 4 == 0) && ((i % 100 != 0) || (i % 400 == 0));
}
public boolean isDate(String paramString)
{
String str1 = paramString;
StrManager localStrManager = new StrManager();
String[] arrayOfString1 = localStrManager.Split(str1, " ");
try
{
String[] arrayOfString2;
if (arrayOfString1.length == 1)
{
arrayOfString2 = localStrManager.Split(str1, "-");
this.year = Integer.parseInt(arrayOfString2[0]);
this.month = (Integer.parseInt(arrayOfString2[1]) - 1);
this.day = Integer.parseInt(arrayOfString2[2]);
if ((this.month > 11) || (this.month < 0)) {
return false;
}
if ((this.month % 2 != 0) && (((this.month > 6) && ((this.day > 31) || (this.day < 1))) || ((this.month <= 6) && ((this.day > 30) || (this.day < 1))))) {
return false;
}
if ((this.month % 2 == 0) && (((this.month > 6) && ((this.day > 30) || (this.day < 1))) || ((this.month <= 6) && ((this.day > 31) || (this.day < 1))))) {
return false;
}
if ((leapYear(this.year) == true) && (this.month == 1) && ((this.day > 29) || (this.day < 1))) {
return false;
}
if ((!leapYear(this.year)) && (this.month == 1) && ((this.day > 28) || (this.day < 1))) {
return false;
}
}
else
{
String str2 = arrayOfString1[0];
String str3 = arrayOfString1[1];
arrayOfString2 = localStrManager.Split(str2, "-");
String[] arrayOfString3 = localStrManager.Split(str3, ":");
this.year = Integer.parseInt(arrayOfString2[0]);
this.month = (Integer.parseInt(arrayOfString2[1]) - 1);
this.day = Integer.parseInt(arrayOfString2[2]);
this.hour = Integer.parseInt(arrayOfString3[0]);
this.min = Integer.parseInt(arrayOfString3[1]);
this.sec = Integer.parseInt(arrayOfString3[2]);
if ((this.month > 11) || (this.month < 0)) {
return false;
}
if ((this.month % 2 != 0) && (((this.month > 6) && ((this.day > 31) || (this.day < 1))) || ((this.month <= 6) && ((this.day > 30) || (this.day < 1))))) {
return false;
}
if ((this.month % 2 == 0) && (((this.month > 6) && ((this.day > 30) || (this.day < 1))) || ((this.month <= 6) && ((this.day > 31) || (this.day < 1))))) {
return false;
}
if ((leapYear(this.year) == true) && (this.month == 1) && ((this.day > 29) || (this.day < 1))) {
return false;
}
if ((!leapYear(this.year)) && (this.month == 1) && ((this.day > 28) || (this.day < 1))) {
return false;
}
if ((this.hour > 23) || (this.hour < 0) || (this.min > 59) || (this.min < 0) || (this.sec > 59) || (this.sec < 0))
return false;
}
}
catch (Exception localException) {
return false;
}
return true;
}
public Date toDate(String paramString)
{
String str1 = paramString;
if (!isDate(str1))
{
return new Date();
}
StrManager localStrManager = new StrManager();
String[] arrayOfString1 = localStrManager.Split(str1, " ");
String[] arrayOfString2;
if (arrayOfString1.length == 1)
{
arrayOfString2 = localStrManager.Split(str1, "-");
this.year = (Integer.parseInt(arrayOfString2[0]) - 1900);
this.month = (Integer.parseInt(arrayOfString2[1]) - 1);
this.day = Integer.parseInt(arrayOfString2[2]);
this.dt = new Date(this.year, this.month, this.day);
}
else
{
String str2 = arrayOfString1[0];
String str3 = arrayOfString1[1];
arrayOfString2 = localStrManager.Split(str2, "-");
String[] arrayOfString3 = localStrManager.Split(str3, ":");
this.year = (Integer.parseInt(arrayOfString2[0]) - 1900);
this.month = (Integer.parseInt(arrayOfString2[1]) - 1);
this.day = Integer.parseInt(arrayOfString2[2]);
this.hour = Integer.parseInt(arrayOfString3[0]);
this.min = Integer.parseInt(arrayOfString3[1]);
this.sec = Integer.parseInt(arrayOfString3[2]);
this.dt = new Date(this.year, this.month, this.day, this.hour, this.min, this.sec);
}
return this.dt;
}
public int Year(Date paramDate)
{
if (paramDate.getYear() < 1900) {
return paramDate.getYear() + 1900;
}
return paramDate.getYear();
}
public int Year(String paramString)
{
if (isDate(paramString)) {
Date localDate = toDate(paramString);
if (localDate.getYear() < 1900) {
return localDate.getYear() + 1900;
}
return localDate.getYear();
}
return -1;
}
public int Quarter(Date paramDate)
{
if (Month(paramDate) < 4) {
return 1;
}
if ((Month(paramDate) < 7) && (Month(paramDate) > 3)) {
return 2;
}
if ((Month(paramDate) < 10) && (Month(paramDate) > 6)) {
return 3;
}
if ((Month(paramDate) < 13) && (Month(paramDate) > 9)) {
return 4;
}
return -1;
}
public int Quarter(String paramString)
{
if (!isDate(paramString)) {
return -1;
}
Date localDate = toDate(paramString);
if (Month(localDate) < 4) {
return 1;
}
if ((Month(localDate) < 7) && (Month(localDate) > 3)) {
return 2;
}
if ((Month(localDate) < 10) && (Month(localDate) > 6)) {
return 3;
}
if ((Month(localDate) < 13) && (Month(localDate) > 9)) {
return 4;
}
return -1;
}
public int Month(Date paramDate)
{
return paramDate.getMonth() + 1;
}
public int Month(String paramString)
{
if (isDate(paramString)) {
Date localDate = toDate(paramString);
return localDate.getMonth() + 1;
}
return -1;
}
public int Day(Date paramDate)
{
return paramDate.getDate();
}
public int Day(String paramString)
{
if (isDate(paramString)) {
Date localDate = toDate(paramString);
return localDate.getDate();
}
return -1;
}
public int Hour(Date paramDate)
{
return paramDate.getHours();
}
public int Hour(String paramString)
{
if (isDate(paramString)) {
Date localDate = toDate(paramString);
return localDate.getHours();
}
return -1;
}
public int Minute(Date paramDate)
{
return paramDate.getMinutes();
}
public int Minute(String paramString)
{
if (isDate(paramString)) {
Date localDate = toDate(paramString);
return localDate.getMinutes();
}
return -1;
}
public int Second(Date paramDate)
{
return paramDate.getSeconds();
}
public int Second(String paramString)
{
if (isDate(paramString)) {
Date localDate = toDate(paramString);
return localDate.getSeconds();
}
return -1;
}
public String getWeek(Date paramDate)
{
Calendar localCalendar = Calendar.getInstance();
localCalendar.setTime(paramDate);
localCalendar.setFirstDayOfWeek(1);
int i = localCalendar.get(7);
switch (i) {
case 1:
return "星期天";
case 2:
return "星期一";
case 3:
return "星期二";
case 4:
return "星期三";
case 5:
return "星期四";
case 6:
return "星期五";
}return "星期六";
}
public String getWeek(String paramString)
{
if (!isDate(paramString)) return paramString + ":不是正确的日期!";
return getWeek(toDate(paramString));
}
public int dayOfYear(Date paramDate)
{
Calendar localCalendar = Calendar.getInstance();
localCalendar.setTime(paramDate);
return localCalendar.get(6);
}
public int dayOfYear(String paramString)
{
if (isDate(paramString)) {
Calendar localCalendar = Calendar.getInstance();
localCalendar.setTime(toDate(paramString));
return localCalendar.get(6);
}
return -1;
}
public String date2String(Date paramDate, boolean paramBoolean)
{
String str = paramDate.toLocaleString();
if (paramBoolean) {
return str;
}
return str.substring(0, str.indexOf(" "));
}
public Date dateAdd(String paramString, int paramInt, Date paramDate)
{
this.year = paramDate.getYear();
this.month = paramDate.getMonth();
this.day = paramDate.getDate();
this.hour = paramDate.getHours();
this.min = paramDate.getMinutes();
this.sec = paramDate.getSeconds();
if (paramString.equals("y"))
this.year += paramInt;
if (paramString.equals("q"))
this.month += paramInt * 3;
if (paramString.equals("m"))
this.month += paramInt;
if (paramString.equals("w"))
this.day += paramInt * 7;
if (paramString.equals("d"))
this.day += paramInt;
if (paramString.equals("h"))
this.hour += paramInt;
if (paramString.equals("n"))
this.min += paramInt;
if (paramString.equals("s")) {
this.sec += paramInt;
}
return new Date(this.year, this.month, this.day, this.hour, this.min, this.sec);
}
public Date dateAdd(String paramString1, int paramInt, String paramString2)
{
if (!isDate(paramString2)) {
return new Date();
}
return dateAdd(paramString1, paramInt, toDate(paramString2));
}
public int dateDiff(String paramString, Date paramDate1, Date paramDate2)
{
int i = Year(paramDate1);
int j = Month(paramDate1);
int k = Day(paramDate1);
int m = Hour(paramDate1);
int n = Minute(paramDate1);
int i1 = Second(paramDate1);
int i2 = Year(paramDate2);
int i3 = Month(paramDate2);
int i4 = Day(paramDate2);
int i5 = Hour(paramDate2);
int i6 = Minute(paramDate2);
int i7 = Second(paramDate2);
int i8 = 0;
int i9 = 0;
int i10 = 0;
int i11 = 0;
int i12 = 0;
int i13 = 0;
int i14 = 0;
int i15 = 0;
int i16 = 0;
i8 = i - i2;
if (paramString.equals("y")) {
return i8;
}
int i17 = i8;
if (i8 < 0) i8 = -i8;
for (i16 = 0; i16 < i8; i16++)
{
if (i17 < 0)
i9 -= 4;
else
i9 += 4;
}
i9 = i9 + Quarter(paramDate1) - Quarter(paramDate2);
if (paramString.equals("q")) {
return i9;
}
if (paramDate1.before(paramDate2))
i10 = (i - i2) * 12 + j - i3;
else {
i10 = -((i2 - i) * 12 + i3 - j);
}
if (paramString.equals("m")) {
return i10;
}
i12 = 0;
for (i16 = 0; i16 < i8; i16++) {
if (leapYear(i2 + i16)) {
if (i17 < 0)
i12 -= 366;
else
i12 += 366;
}
else if (i17 < 0)
i12 -= 365;
else {
i12 += 365;
}
}
i12 = dayOfYear(paramDate1) - dayOfYear(paramDate2) + i12;
if (paramString.equals("d")) {
return i12;
}
i13 = i12 * 24 + m - i5;
if (paramString.equals("h")) {
return i13;
}
i14 = i13 * 60 + n - i6;
if (paramString.equals("n")) {
return i14;
}
i15 = i14 * 60 + i1 - i7;
if (paramString.equals("s")) {
return i15;
}
return -1;
}
public int dateDiff(String paramString1, String paramString2, String paramString3)
{
if ((!isDate(paramString2)) || (!isDate(paramString3))) {
return -1;
}
Date localDate1 = toDate(paramString2);
Date localDate2 = toDate(paramString3);
return dateDiff(paramString1, localDate1, localDate2);
}
}