时间的几个小玩意..

本来准备写一个完整的方法的...后来发现要写出一个标准的时间真的是相当的麻烦

首先要区分闰年和平年  然后月份判断的时候 要分析是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));
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值