本来准备写一个完整的方法的...后来发现要写出一个标准的时间真的是相当的麻烦
首先要区分闰年和平年 然后月份判断的时候 要分析是28,29,30还是31天
都没有顺序可寻..所以这个类还没写完
package com.fitto.sxy;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class DateFormual {
List month = null;
public static List IfyearM(String st) { // 判断是否是闰年
List month = new ArrayList();
if (st.length() >= 4) {
int year = Integer.parseInt(st);
if (((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) {
month = getMonth(2);
} else {
month = getMonth(1);
}
} else {
System.out.println("年份不对");
}
return month;
}
public static int IfyearD(String st) { // 判断是否是闰年
int day = 0;
if (st.length() >= 4) {
int year = Integer.parseInt(st);
if (((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) {
day = getDay(2);
} else {
day = getDay(1);
}
} else {
System.out.println("年份不对");
}
return day;
}
public static List getMonth(int type) { // 返回闰年的月份 和平年的月份
List month = new ArrayList();
switch (type) {
case 1: // 1为平年
month.add("31");
month.add("28");
month.add("31");
month.add("30");
month.add("31");
month.add("30");
month.add("31");
month.add("30");
month.add("31");
month.add("30");
month.add("31");
month.add("30");
break;
case 2: // 为闰年
month.add("31");
month.add("29");
month.add("31");
month.add("30");
month.add("31");
month.add("30");
month.add("31");
month.add("30");
month.add("31");
month.add("30");
month.add("31");
month.add("30");
break;
default:
System.out.println("年份类型有误");
break;
}
return month;
}
public static int getDay(int type) {
int day = 0;
if (type == 1) {
day = 365;
}
if (type == 2) {
day = 366;
}
if (type > 2) {
System.out.println("年份类型有误");
}
return day;
}
public String getYeardiffer(String year1, String year2) {
String str = "";
int y1 = Integer.parseInt(year1);
int y2 = Integer.parseInt(year2);
if (y1 == y2) {
month = IfyearM(year1);
}
return str;
}
/*
* year 判断是哪一年
*
* day 总天数
*
* type 1、表示 从前往后 2、表示 从后往前
*/
public static String getDate(String year, int day, int type) { //计算出哪一年的 多少天 为几月几号
String date = "";
int Day = day;
List month = new ArrayList();
int mSum = 0;
int m = 0;
month = IfyearM(year);
if (type == 1) {
mSum = 1;
if (Day > 31) {
do {
mSum ++;
Day = Day - Integer.parseInt(String.valueOf(month.get(m)));
m ++;
} while (Day > 28);
date = year + "-"+mSum+"-"+Day;
}else{
date = year + "-1-"+Day;
}
} else {
mSum = 12;
if (Day > 30) {
System.out.println("11");
do {
mSum --;
Day = Day - Integer.parseInt(String.valueOf(month.get(m)));
m ++;
} while (Day > 28);
date = year + "-"+mSum+"-"+(Integer.parseInt(String.valueOf(month.get(mSum-1)))-Day);
}else{
date = year + "-12-"+(30-Day);
}
}
return date;
}
public static int getbeginTime(String time) { // 计算今天是今年的多少天
int timeDate = 0;
List month = new ArrayList();
int mSum = 0;
String datel[] = time.replace("-", " ").split(" ");
month = IfyearM(datel[0]);
for (int i = 0; i < Integer.parseInt(datel[1]) - 1; i++) {
mSum = mSum + Integer.parseInt(String.valueOf(month.get(i)));
}
timeDate = mSum + Integer.parseInt(datel[2]);
return timeDate;
}
public static int getendTime(String time) { // 计算今天到年底还剩多少天
int timeDate = 0;
List month = new ArrayList();
int mSum = 0;
int dSum = 0;
String datel[] = time.replace("-", " ").split(" ");
month = IfyearM(datel[0]);
dSum = Integer.parseInt(String.valueOf(month.get(Integer
.parseInt(datel[1]) + 1)))
- Integer.parseInt(datel[2]) + 1; // 计算这个月还剩下多少天
for (int i = 0; i < 12 - Integer.parseInt(datel[1]); i++) {
mSum = mSum + Integer.parseInt(String.valueOf(month.get(i + 3)));
}
timeDate = mSum + dSum;
return timeDate;
}
public String DateHString(String date, String endDate) {
String str = "";
Date udate = null;
int Y = 0, M = 0, D = 0;
// int s = 0, f = 0, m = 0;
int sum;
if (date.length() == endDate.length()) {
if (date.length() == 10) {
String datel[] = date.replace("-", " ").split(" ");
String enddatel[] = endDate.replace("-", " ").split(" ");
Y = Integer.parseInt(datel[0]) - Integer.parseInt(enddatel[0]);
M = Integer.parseInt(datel[1]) - Integer.parseInt(enddatel[1]);
D = Integer.parseInt(datel[2]) - Integer.parseInt(enddatel[2]);
}
}
return str;
}
public static void main(String[] args) {
DateFormual df = new DateFormual();
// df.Ifyear("2200");
System.out.println("今年过了多少天"+getbeginTime("2008-3-1"));
System.out.println("今年剩余多少天"+getendTime("2008-3-1"));
System.out.println("88年的32天 是几月几号"+getDate("1988",32,2));
}
}