您的位置:首页 > 移动开发 > Android开发

Android日期相关函数的工具类

2016-03-19 16:44 746 查看
转载于:http://www.android100.org/html/201406/03/16012.html

提取了一些在开发过程中可能会用到的日期相关的函数作为工具类,供大家参考。如DateFormat,Calendar等。

/**
 * 日期操作工具类.
 * 
 * @author shimiso
 */

public class DateUtil {

private static final String FORMAT = "yyyy-MM-dd HH:mm:ss";

public static Date str2Date(String str) {
return str2Date(str, null);
}

public static Date str2Date(String str, String format) {
if (str == null || str.length() == 0) {
return null;
}
if (format == null || format.length() == 0) {
format = FORMAT;
}
Date date = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
date = sdf.parse(str);

} catch (Exception e) {
e.printStackTrace();
}
return date;

}

public static Calendar str2Calendar(String str) {
return str2Calendar(str, null);

}

public static Calendar str2Calendar(String str, String format) {

Date date = str2Date(str, format);
if (date == null) {
return null;
}
Calendar c = Calendar.getInstance();
c.setTime(date);

return c;

}

public static String date2Str(Calendar c) {// yyyy-MM-dd HH:mm:ss
return date2Str(c, null);
}

public static String date2Str(Calendar c, String format) {
if (c == null) {
return null;
}
return date2Str(c.getTime(), format);
}

public static String date2Str(Date d) {// yyyy-MM-dd HH:mm:ss
return date2Str(d, null);
}

public static String date2Str(Date d, String format) {// yyyy-MM-dd HH:mm:ss
if (d == null) {
return null;
}
if (format == null || format.length() == 0) {
format = FORMAT;
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
String s = sdf.format(d);
return s;
}

public static String getCurDateStr() {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
return c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-"
+ c.get(Calendar.DAY_OF_MONTH) + "-"
+ c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE)
+ ":" + c.get(Calendar.SECOND);
}

/**
* 获得当前日期的字符串格式

* @param format
* @return
*/
public static String getCurDateStr(String format) {
Calendar c = Calendar.getInstance();
return date2Str(c, format);
}

// 格式到秒
public static String getMillon(long time) {

return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(time);

}

// 格式到天
public static String getDay(long time) {

return new SimpleDateFormat("yyyy-MM-dd").format(time);

}

// 格式到毫秒
public static String getSMillon(long time) {

return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS").format(time);

}

/*
输入的是String,格式诸如20120102,实现加一天的功能,返回的格式为String,诸如20120103
*/
public static String stringDatePlus(String row) throws ParseException{
String year=row.substring(0, 4);
String month=row.substring(4,6);
String day=row.substring(6);
String date1=year+"-"+month+"-"+day;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date startDate=sdf.parse(date1);
Calendar cd = Calendar.getInstance();  
cd.setTime(startDate);
cd.add(Calendar.DATE, 1);
String dateStr =sdf.format(cd.getTime());
String year1=dateStr.substring(0,4);
String month1=dateStr.substring(5,7);
String day1=dateStr.substring(8);
return year1+month1+day1;
}

/*
输入的是String,格式诸如20120102,实现减一天的功能,返回的格式为String,诸如20120101
*/
public static String stringDateDecrease(String row) throws ParseException{
String year=row.substring(0, 4);
String month=row.substring(4,6);
String day=row.substring(6);
String date1=year+"-"+month+"-"+day;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date startDate=sdf.parse(date1);
Calendar cd = Calendar.getInstance();  
cd.setTime(startDate);
cd.add(Calendar.DATE, -1);
String dateStr =sdf.format(cd.getTime());
String year1=dateStr.substring(0,4);
String month1=dateStr.substring(5,7);
String day1=dateStr.substring(8);
return year1+month1+day1;
}

/*
输入的格式为String,诸如20120101,返回的格式为String,诸如2012-01-01
*/
public static String stringDateChange(String date)
{
if(date.length()=="20120101".length()){
String year=date.substring(0, 4);
String month=date.substring(4,6);
String day=date.substring(6);
return year+"-"+month+"-"+day;
}else{
return date;
}

}
/**
* 日期向后推一天
* @param date 格式:20120101 
* @return  20120102
*/
public static String tonextday(String date){
int year = Integer.parseInt(date.substring(0,4));
int month = Integer.parseInt(date.substring(4,6));
int day = Integer.parseInt(date.substring(6));
Calendar calendar = Calendar.getInstance();
calendar.set(year, month-1, day+1);
Date newdate = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
String da = format.format(newdate);
return da;
}
public static void main(String[] args) {
new StringHandle().previousWeekEndDayByDate("20130109");
}

/**
* 获取当前日期上一周的开始日期
(周日)
*/
public static String previousWeekByDate(String date) {
int year = Integer.parseInt(date.substring(0,4));
int month = Integer.parseInt(date.substring(4,6));
int day = Integer.parseInt(date.substring(6));
Calendar calendar = Calendar.getInstance();
calendar.set(year, month-1, day);
Date newdate = calendar.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
    Calendar cal = Calendar.getInstance();
    cal.setTime(newdate);
    int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
    if(1 == dayWeek) {
    cal.add(Calendar.DAY_OF_MONTH, -1);
    }
    cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
    int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
    cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-s);//根据日历的规则,给当前日期减往星期几与一个星期第一天的差值 
    cal.add(Calendar.WEEK_OF_YEAR, -1);
    String imptimeBegin = sdf.format(cal.getTime());
//     System.out.println("所在周星期日的日期:"+imptimeBegin);
    return imptimeBegin;
}

/**
* 获取当前日期上一周的结束日期
(周六)
*/
public static String previousWeekEndDayByDate(String date) {
int year = Integer.parseInt(date.substring(0,4));
int month = Integer.parseInt(date.substring(4,6));
int day = Integer.parseInt(date.substring(6));
Calendar calendar = Calendar.getInstance();
calendar.set(year, month-1, day);
Date newdate = calendar.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
    Calendar cal = Calendar.getInstance();
    cal.setTime(newdate);
    int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
    if(1 == dayWeek) {
    cal.add(Calendar.DAY_OF_MONTH, -1);
    }
    cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
    int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
    cal.add(Calendar.DATE, cal.getFirstDayOfWeek()+(6-s));
    cal.add(Calendar.WEEK_OF_YEAR, -1);
    String imptimeBegin = sdf.format(cal.getTime());
//     System.out.println("星期六的日期:"+imptimeBegin);
    return imptimeBegin;
}

/**
* 获取当前日期当前一周的开始日期
(周日)
*/
public static String getCurrentWeekFirstDayByDate(String date) {
int year = Integer.parseInt(date.substring(0,4));
int month = Integer.parseInt(date.substring(4,6));
int day = Integer.parseInt(date.substring(6));
Calendar calendar = Calendar.getInstance();
calendar.set(year, month-1, day);
Date newdate = calendar.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
    Calendar cal = Calendar.getInstance();
    cal.setTime(newdate);
    int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
    if(1 == dayWeek) {
    cal.add(Calendar.DAY_OF_MONTH, -1);
    }
    cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
    int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
    cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-s);//根据日历的规则,给当前日期减往星期几与一个星期第一天的差值 
 
    String imptimeBegin = sdf.format(cal.getTime());
  //  System.out.println("所在周星期日的日期:"+imptimeBegin);
    return imptimeBegin;
}
/**
* 获取当前日期当前一周的结束日期
(周六)
*/
public static String getCurrentWeekEndDayByDate(String date) {
int year = Integer.parseInt(date.substring(0,4));
int month = Integer.parseInt(date.substring(4,6));
int day = Integer.parseInt(date.substring(6));
Calendar calendar = Calendar.getInstance();
calendar.set(year, month-1, day);
Date newdate = calendar.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
    Calendar cal = Calendar.getInstance();
    cal.setTime(newdate);
    int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
    if(1 == dayWeek) {
    cal.add(Calendar.DAY_OF_MONTH, -1);
    }
    cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
    int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
    cal.add(Calendar.DATE, cal.getFirstDayOfWeek()+(6-s));
 
    String imptimeBegin = sdf.format(cal.getTime());
    return imptimeBegin;
}

/**
 * 返回上一个月的第一天
 * @param date20120304
 * @return  20120201
 */
public static String previousMonthByDate(String date) {
// TODO Auto-generated method stub
int year = Integer.parseInt(date.substring(0,4));
int month = Integer.parseInt(date.substring(4,6));
int day = Integer.parseInt(date.substring(6));
Calendar calendar = Calendar.getInstance();
calendar.set(year, month-2, 1);
Date newdate = calendar.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
    Calendar cal = Calendar.getInstance();
    cal.setTime(newdate);
    String imptimeBegin = sdf.format(cal.getTime());
//     System.out.println(imptimeBegin);
return imptimeBegin;
}

/**
* 返回下一个月的第一天
* @param date20120304
* @return  20120401
*/
public static String nextMonthByDate(String date) {
// TODO Auto-generated method stub
int year = Integer.parseInt(date.substring(0,4));
int month = Integer.parseInt(date.substring(4,6));
int day = Integer.parseInt(date.substring(6));
Calendar calendar = Calendar.getInstance();
calendar.set(year, month, 1);
Date newdate = calendar.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
    Calendar cal = Calendar.getInstance();
    cal.setTime(newdate);
    String imptimeBegin = sdf.format(cal.getTime());
//     System.out.println(imptimeBegin);
return imptimeBegin;
}
/**
 * 返回当前月的第一天 
 * @param date20120103
 * @return 20120101
 */
public static String getCurrentMonthFirstDayByDate(String date) {
int year = Integer.parseInt(date.substring(0,4));
int month = Integer.parseInt(date.substring(4,6));
int day = Integer.parseInt(date.substring(6));
Calendar calendar = Calendar.getInstance();
calendar.set(year, month-1, 1);
Date newdate = calendar.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); 
    Calendar cal = Calendar.getInstance();
    cal.setTime(newdate);
    String imptimeBegin = sdf.format(cal.getTime());
return imptimeBegin;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: