java对时间的各种操作方法

package com.tests;

import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class LCalendar {

 /**
  * 将短时间格式字符串转换为时间 yyyy-MM-dd
  *
  * @param strDate
  * @return
  */
 public Date strToDate(String strDate) {
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  ParsePosition pos = new ParsePosition(0);
  Date strtodate = formatter.parse(strDate, pos);
  return strtodate;
 }

 /**
  * 获取现在时间
  *
  * @return 返回短时间字符串格式yyyy-MM-dd
  */
 public String getStringDateShort() {
  Date currentTime = new Date();
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  String dateString = formatter.format(currentTime);
  return dateString;
 }
 
 /**
   * 获取现在时间
   *
   * @return返回字符串格式 yyyy-MM-dd HH:mm:ss
   */
  public String getStringDate() {
   Date currentTime = new Date();
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   String dateString = formatter.format(currentTime);
   return dateString;
  }

 /**
  * @param nowdate 格式为:yyyy-MM-dd
  * @param delay 整数 正数为后延天数,负数为前移天数
  * @param 方法功能 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数
  */
 public String getNextDay(String nowdate, String delay) {

  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  String mdate = "";
  Date d = strToDate(nowdate);
  long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60
    * 60;
  d.setTime(myTime * 1000);
  mdate = format.format(d);
  return mdate;
 }

 /**
  * 根据日期获得这个日期所在的周的星期一和星期日的日期
  *
  * @param date
  * @return
  */
 public String[] getWeekOfDate(String date) {
  Calendar calendar = Calendar.getInstance();
  calendar.setTime(strToDate(date));
  int intWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
  String[] d = new String[2];
  if (intWeek >= 1 && intWeek <= 6) {
   if ((intWeek - 1) == 0) {
    d[0] = date;
    d[1] = getNextDay(date, "6");
   } else {
    d[0] = getNextDay(date, String.valueOf((1 - intWeek)));
    d[1] = getNextDay(date, String.valueOf((7 - intWeek)));
   }
  } else {
   d[0] = getNextDay(date, "-6");
   d[1] = date;
  }
  return d;
 }

 /**
  * 获得最近十五周
  *
  * @param date
  * @return
  */
 public String getWeekOfYear() {
  StringBuffer wk;
  Calendar c = Calendar.getInstance();
  int w = c.get(Calendar.WEEK_OF_YEAR);
  String week = String.valueOf(w);
  if (week.length() == 1)
   week = "今年第0" + week + "周";
  else
   week = "今年第" + week + "周";

  Date currentTime = new Date();
  SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  String date = formatter.format(currentTime);
  wk = new StringBuffer(week + "," + date);
  for (int i = 1; i < 15; i++) {
   date = getNextDay(date, "-7");
   w--;
   if (w < 1) {
    c.setTime(strToDate(date));
    int w1 = c.get(Calendar.WEEK_OF_YEAR);
    String week1 = String.valueOf(w1);
    if (week1.length() == 1)
     week1 = "去年第0" + week1 + "周";
    else
     week1 = "去年第" + week1 + "周";
    wk.append("," + week1 + "," + date);
   } else {
    week = String.valueOf(w);
    if (week.length() == 1)
     week = "今年第0" + week + "周";
    else
     week = "今年第" + week + "周";
    wk.append("," + week + "," + date);
   }
  }
  return wk.toString();
 }

 /**
  * 获得某一个日期所在的年的第几周
  *
  * @param date
  * @return 返回格式如"2009年第05周"
  */
 public String getWeekYear(String date) {
  Calendar c = Calendar.getInstance();
  c.setTime(strToDate(date));
  int year = c.get(Calendar.YEAR);
  String y = String.valueOf(year);
  int w = c.get(Calendar.WEEK_OF_YEAR);
  String week = String.valueOf(w);
  if (week.length() == 1)
   week = y+"年第0" + week + "周";
  else
   week = y+"年第" + week + "周";

  return week;
 }
 
 /**
  * 获得某一个日期所在的月的第几周
  *
  * @param date
  * @return 返回格式如"2009年02月第05周"
  */
 public String getWeekOfMonth(String date) {
  Calendar c = Calendar.getInstance();
  c.setTime(strToDate(date));
  int year = c.get(Calendar.YEAR);
  int month = c.get(Calendar.MONTH)+1;
  String y = String.valueOf(year);
  String m = String.valueOf(month);
  if(m.length()==1)m = "0"+m;
  int w = c.get(Calendar.WEEK_OF_MONTH);
  String week = String.valueOf(w);
  if (week.length() == 1)
   week = y+"年"+m+"月第0" + week + "周";
  else
   week = y+"年"+m+"月第" + week + "周";

  return week;
 }
 
 /**
   * 得到二个日期之间的天数
   */
  public String getTwoDay(String sj1, String sj2) {
   SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
   long day = 0;
   try {
    java.util.Date date = myFormatter.parse(sj2);
    java.util.Date mydate = myFormatter.parse(sj1);
    day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
   } catch (Exception e) {
    return "";
   }  
   return String.valueOf(day);
  }
 
  /**
   * 判断是否润年
   *
   * @param ddate
   * @return
   */
  public boolean isLeapYear(String ddate) {
   /**
    * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
    * 3.能被4整除同时能被100整除则不是闰年
    */
   Date d = strToDate(ddate);
   GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
   gc.setTime(d);
   int year = gc.get(Calendar.YEAR);
   if ((year % 400) == 0)
    return true;
   else if ((year % 4) == 0) {
    if ((year % 100) == 0)
     return false;
    else
     return true;
   } else
    return false;
  }
 
  /**
   * 取得一个月第一天的日期
   *
   * @param date
   * @return
   */
 
  public String getFirstDayOfMonth(String date)
  {
  String a[] = date.split("-");
  String day; 
  day = a[0]+"-"+a[1]+"-01"; 
  return day; 
  }
 
  /**
   * 取得一个月最后一天的日期
   *
   * @param date
   * @return
   */
 
  public String getLastDayOfMonth(String date)
  {
  String a[] = date.split("-");
  int b = Integer.parseInt(a[1]);
  String day;
  if(b==2)
  {
   if(isLeapYear(date))
    {
     day = "29";
    }else
    {
     day = "28";
    }
  }else if(b==2||b==4||b==6||b==9||b==11)
  {
   day = "30";
  }
  else
  {
   day = "31";
  }
  
  day = a[0]+"-"+a[1]+"-"+day;
  
  return day; 
  }
 
  /**
   * 取得一个月有多少周
   *
   * @param date
   * @return
   */
 
  public int getMonthOfWeeks(String date)
  {
   String lastDay = getLastDayOfMonth(date);
   Calendar cal = Calendar.getInstance();
   cal.setTime(strToDate(lastDay));
   int weeks = cal.get(Calendar.WEEK_OF_MONTH);
   return weeks;
  }
 
  /**
   * 根据一个日期,返回是星期几的字符串
   *
   * @param sdate
   * @return
   */
  public String getWeek(String sdate) {
   // 再转换为时间
   Date date = strToDate(sdate);
   Calendar c = Calendar.getInstance();
   c.setTime(date);
   // int hour=c.get(Calendar.DAY_OF_WEEK);
   // hour中存的就是星期几了,其范围 1~7
   // 1=星期日 7=星期六,其他类推
   return new SimpleDateFormat("EEEE").format(c.getTime());
  }
  public String getWeekStr(String sdate){
   String str = "";
   str = getWeek(sdate);
   if("1".equals(str)){
    str = "星期日";
   }else if("2".equals(str)){
    str = "星期一";
   }else if("3".equals(str)){
    str = "星期二";
   }else if("4".equals(str)){
    str = "星期三";
   }else if("5".equals(str)){
    str = "星期四";
   }else if("6".equals(str)){
    str = "星期五";
   }else if("7".equals(str)){
    str = "星期六";
   }
   return str;
  }


/* public static void main(String[] args) {
  Calendar c = Calendar.getInstance();
  LCalendar cl = new LCalendar();
  String ca = getTwoDay("2009-02-06","2009-02-10");
  System.out.println(ca);
 }*/

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值