Java 日期的一些算法

package com.kaven.utils;


import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


import android.util.Log;
import android.webkit.MimeTypeMap;


public class DateTimeUtil {
   private static String  birthday="1986-11-17";
   private static int  maxage=80;
   private static DateTimeUtil dateUtil;
   private static Date birthdayDate;
   private  SimpleDateFormat format;
   public static DateTimeUtil getInstance(){
  if (dateUtil==null) {
dateUtil=new DateTimeUtil();
}
  return dateUtil;
   }
   private DateTimeUtil(){
  format=new SimpleDateFormat("yyyy-MM-dd");
  
  try {
birthdayDate=format.parse(birthday);
   } catch (ParseException e) {
e.printStackTrace();
  }
   }
   public int getYearRemainDays(){
  Calendar ca=Calendar.getInstance();
  int pass= ca.get(Calendar.DAY_OF_YEAR);
  int all=ca.getActualMaximum(Calendar.DAY_OF_YEAR);
  return all-pass;
   }
   public int getYearPassDays(){
  Calendar ca=Calendar.getInstance();
  int pass= ca.get(Calendar.DAY_OF_YEAR);
  return pass;
   }
   public int getAge(){


  Date today=new Date();
  Calendar ca=Calendar.getInstance();
  ca.setTime(birthdayDate);
  int yearBir=ca.get(Calendar.YEAR);
  ca.setTime(today);
  int yearToday=ca.get(Calendar.YEAR);
  
  int age=yearToday-yearBir;
  return age;
   }
   public int getMaxAge(){
  return maxage;
   }
   public  int getPassDays(){
  Date today=new Date();
  long dayTime=birthdayDate.getTime();
  long nowTime=today.getTime();
  long time=nowTime-dayTime;
  int passDays=(int)(time/24/60/60/1000);
  return passDays;
   }
   public  int getRemainDays(){
  Calendar ca=Calendar.getInstance();
  ca.setTime(birthdayDate);
  Date today=new Date();
  ca.add(Calendar.YEAR,maxage);
  long maxtime=ca.getTime().getTime();
  long now=today.getTime();
  int remainDays=(int)((maxtime-now)/24/60/60/1000);
  Log.d("tag","remainDays="+remainDays);
  return remainDays;
   }
   public  int getAllDays(){
  Calendar ca=Calendar.getInstance();
  ca.setTime(birthdayDate);
  long time=ca.getTime().getTime();
  ca.add(Calendar.YEAR,maxage);
  long maxtime=ca.getTime().getTime();
  int allDays=(int)((maxtime-time)/24/60/60/1000);
  return allDays;
   }
   
   public  String getYearMonthDay(){
  Date today=new Date();
  String str=format.format(today);
  return str;
   }
   public String getMaxYear(){
  Calendar ca=Calendar.getInstance();
  ca.setTime(birthdayDate);
  long time=ca.getTime().getTime();
  ca.add(Calendar.YEAR,maxage);
  Date date=ca.getTime();
  String str=format.format(date);
  return str;
   }
   public  int getMonthMaxDay(){
 
  Calendar ca=Calendar.getInstance();
  int maxDay= ca.getActualMaximum(Calendar.DAY_OF_MONTH);
  return maxDay;
   }
   public String getLunarMonthDay(){
  Calendar ca=Calendar.getInstance();
  LunarCalender luCa=new LunarCalender(ca);
  String str=luCa.toString();
  return str;
   }
   public int getTheYearAllDays(){
  Calendar ca=Calendar.getInstance();
  int maxDays= ca.getActualMaximum(Calendar.DAY_OF_YEAR);
  return maxDays;
   }
   public int getTheYearPassDays(){
  Calendar ca=Calendar.getInstance();
  int todays=ca.get(Calendar.DAY_OF_YEAR);
  return todays;
   }
   public int getTheYearRemainDays(){
  Calendar ca=Calendar.getInstance();
  int maxDays= ca.getActualMaximum(Calendar.DAY_OF_YEAR);
  int todays=ca.get(Calendar.DAY_OF_YEAR);
  int remainDays=maxDays-todays;
  return remainDays;
   }
   public  String getTodayTime(){
  Date date=new Date();
  SimpleDateFormat f=new SimpleDateFormat("HH:mm:ss");
  String str=f.format(date);
  return str;
   }
   
   public String getTodayRemainTime(){
  Calendar ca=Calendar.getInstance();
  Date date=ca.getTime();
  long t1=date.getTime();
  ca.set(Calendar.HOUR_OF_DAY, 23);
  ca.set(Calendar.SECOND, 59);
  ca.set(Calendar.MINUTE, 59);
  date=ca.getTime();
  long t2=date.getTime();
  long t3=(t2-t1)/1000;
  int hour=(int)(t3/60/60);
  int minute=(int)((t3-hour*60*60)/60);
  int second=(int)((t3-hour*60*60)%60);
  String strHour;
  String strMinute;
  String strSecond;
  if (hour<10) {
strHour="0"+hour;
  }else{
  strHour=""+hour;
  }
  
  if (minute<10) {
  strMinute="0"+minute;
  }else{
  strMinute=""+minute;
  }
  
  if (second<10) {
  strSecond="0"+second;
  }else{
  strSecond=""+second;
  }
  return strHour+":"+strMinute+":"+strSecond;
   }
   public String getTheWeekStartEndDate(){
  Calendar ca=Calendar.getInstance();
  SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd");
  int dayOfWeek = ca.get(Calendar.DAY_OF_WEEK);
  //中国习惯:周一是一周的开始
   if (dayOfWeek==1) {
dayOfWeek=7;
}else{
dayOfWeek--;
}
//   Log.d("tag","dayofweek="+dayOfWeek+"min= "+ca.getActualMinimum(Calendar.DAY_OF_WEEK)+" max="+ca.getActualMaximum(Calendar.DAY_OF_WEEK));
  Calendar  cal=(Calendar)ca.clone();
  
  cal.add(Calendar.DATE,1-dayOfWeek);
  Date date1=cal.getTime();
  cal=(Calendar)ca.clone();
  cal.add(Calendar.DATE,7-dayOfWeek);
  Date date2=cal.getTime();
  String str1=f.format(date1);
  String str2=f.format(date2);
  Log.d("tag","date1="+str1+" date2="+str2);
  return  str1+"_"+str2;
   }
   
   public String getTheMonthStartEndDay(){
  Calendar ca=Calendar.getInstance();
  SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd");
  int maximum = ca.getActualMaximum(Calendar.DAY_OF_MONTH);
  int minmum=ca.getActualMinimum(Calendar.DAY_OF_MONTH);
  int day=ca.get(Calendar.DAY_OF_MONTH);
  Calendar cal=(Calendar)ca.clone();
  cal.add(Calendar.DATE, maximum-day);
  Date dateD=cal.getTime();
  String strD=f.format(dateD);
  cal=(Calendar)ca.clone();
  cal.add(Calendar.DATE, minmum-day);
  Date dateX=cal.getTime();
  String strX=f.format(dateX);
  Log.d("tag","dateD="+strD+" dateX="+strX);
  return dateX+"_"+dateD;
   }
   public String getWeekDay(){
  Calendar ca=Calendar.getInstance();
  int w=ca.get(Calendar.DAY_OF_WEEK);
  Log.d("tag", "w="+w);
  String str=null;
  switch (w) {
  case 2:
       str="星期一";
  break;
  case 3:
  str="星期二";
  break;
  case 4:
  str="星期三";
  break;
  case 5:
  str="星期四";
  break;
  case 6:
  str="星期五";
  break;
  case 7:
  str="星期六";
  break;
  case 1:
  str="星期天";
  break;


}
  return str;
   }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值