1.
package com.sysoft.oa.rc.bean;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.Set;
import java.util.TreeSet;
public class GetStringDateTime {
/**
* String 转换成 Date
*
* @param date
* String类型的Date
* @param formatPattern
* 时间格式,null或者""时 为 "yyyy-MM-dd HH:mm:ss"
* @return Date
*/
public static Date getDateStringTime(String date, String formatPattern) {
if (date == null || date.equals("")) {
return null;
}
SimpleDateFormat sdf;
// SimpleDateFormat sdf = new SimpleDateFormat() ;
try {
if ((formatPattern == null) || formatPattern.equals("")) {
formatPattern = "yyyy-MM-dd HH:mm:ss";
}
// sdf.applyPattern(formatPattern);
sdf = new SimpleDateFormat(formatPattern);
return sdf.parse(date);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* Date 转换成 String
*
* @param Date
* @param formatPattern
* 时间格式,null或者""时 为 "yyyy-MM-dd HH:mm:ss"
* @return Date的String格式,如果 Date Date = null 返回 ""
*/
public static String getStringDateTime(Date date, String formatPattern) {
if (date == null) {
return "";
}
if (formatPattern == null || formatPattern.equals("")) {
formatPattern = "yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat sd = new SimpleDateFormat(formatPattern);
return sd.format(date);
}
/**
* Date 转换成 String,可以指定时区
*
* @param Date
* @param formatPattern
* 时间格式,null或者""时 为 "yyyy-MM-dd HH:mm:ss"
* @return Date的String格式,如果 Date Date = null 返回 ""
*/
public static String getStringDateTimeLocale(Date date,
String formatPattern, Locale locale) {
if (date == null) {
return "";
}
if (formatPattern == null || formatPattern.equals("")) {
formatPattern = "yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat sd = null;
if (locale != null) {
sd = new SimpleDateFormat(formatPattern, locale);
} else {
sd = new SimpleDateFormat(formatPattern);
}
return sd.format(date);
}
/**
* Date 转换成 String
*
* @param Date
* @param formatPattern
* 时间格式,null或者""时 为 "yyyy-MM-dd HH:mm:ss"
* @return Date的String格式,如果 Date Date = null 返回 ""
*/
public static String getTimestampString(Timestamp date, String formatPattern) {
if (date == null) {
return "";
}
if (formatPattern == null || formatPattern.equals("")) {
formatPattern = "yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat sd = new SimpleDateFormat(formatPattern);
return sd.format(date);
}
/**
* 将 Date 的String 格式 通过formatPattern(yyyy-MM-dd) 转换成 新的 String
*
* @param Date
* @param formatPattern
* 时间格式,null或者""时 为 "yyyy-MM-dd HH:mm:ss"
* @return Date的String格式,如果 String Date = null 返回 ""
*/
public static String getStringDatePattern(String date, String formatPattern) {
if (date == null || date.equals("")) {
return null;
}
if (formatPattern == null || formatPattern.equals("")) {
formatPattern = "yyyy-MM-dd HH:mm:ss";
}
String retVal = GetStringDateTime.getStringDateTime(GetStringDateTime
.getDateStringTime(date, formatPattern), formatPattern);
return retVal;
}
/**
*
* @param day
* 输入日期
* @param i
* 需要增减的天数, 比如 加 1 天, 则输入 1 。 减 1 天 则输入 -1
* @param formatPattern
* 输入的时间格式,默认 "yyyy-MM-dd HH:mm:ss"
* @return String 增减后的日期的String形式
*/
public static String nextDay(Date day, long i, String formatPattern) {
//
// Date day = new Date();
// System.out.println(GetStringDateTime.getStringDateTime(day,
// "yyyy-MM-dd"));
long day1 = day.getTime() + 24L * 60L * 60L * 1000L * i;
day.setTime(day1);
if (formatPattern == null || formatPattern.equals("")) {
formatPattern = "yyyy-MM-dd HH:mm:ss";
}
String nextDay = GetStringDateTime
.getStringDateTime(day, formatPattern);
return nextDay;
}
/**
* 得到当前月份的第一天
*
* @param formatPattern
* 输入的时间格式,默认 "yyyy-MM-dd HH:mm:ss"
* @return 几月1号
*/
public static String currMonthOfFisrtDay(String formatPattern) {
String firstDay = "";
Date date = new Date();
if (formatPattern == null || formatPattern.equals("")) {
formatPattern = "yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat sd = new SimpleDateFormat(formatPattern);
Calendar c = Calendar.getInstance();
c.setTime(date);
int iDate = c.get(Calendar.DAY_OF_MONTH);
c.add(Calendar.DAY_OF_MONTH, -iDate + 1);
date = c.getTime();
firstDay = sd.format(date);
return firstDay;
}
/**
* 获得2个时间段中的所有时间
*
* @param from
* 开始时间
* @param to
* 结束时间
* @param formatPattern
* 返回的时间格式
* @return List 2个时间段中的所有 时间
*/
public static Set dateToDate(Date from, Date to, String formatPattern) {
Set set = new TreeSet();
SimpleDateFormat sdf;
if (formatPattern == null || formatPattern.equals("")) {
formatPattern = "yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat sd = new SimpleDateFormat(formatPattern);
Date fromT = from;
Date toT = to;
if (from.after(to)) {
from = toT;
to = fromT;
} else if (from.equals(to)) {
set.add(sd.format(from));
return set;
}
set.add(sd.format(from));
Calendar cal = Calendar.getInstance();
cal.setTime(from);
while (true) {
cal.add(Calendar.DAY_OF_MONTH, 1);
if (to.after(cal.getTime())) {
set.add(sd.format(cal.getTime()));
} else {
break;
}
}
set.add(sd.format(to));
return set;
}
public static void main(String[] args) {
System.out.println(getStringDateTime(new Date(), "yyyy-MM-dd a"));
Date date = getDateStringTime("2007-3-01 14:30", "yyyy-MM-dd mm:ss");
String day = nextDay(date, -31, "yyyy-MM-dd");
System.out.println(day);
System.out.println(date);
System.out.println(GetStringDateTime.getStringDateTime(new Date(),
"yyyyMMddHHmmss"));
System.out.println("-----------------");
System.out.println(currMonthOfFisrtDay(null));
Calendar cal = Calendar.getInstance();
Calendar cal1 = Calendar.getInstance();
cal.set(1990, 6 - 1, 4);
cal1.set(2010, 1 - 1, 1);
Set set = dateToDate(cal.getTime(), cal1.getTime(), "yyyy-MM");
for (Object s : set) {
System.out.println(s.toString());
}
System.out.println("---------------------------");
System.out.println(getStringDateTimeLocale(new Date(),
"yyyy年MM月dd日 EEEE", Locale.CHINA));
}
}
2
/*
* 创建日期 2005-12-14
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
package com.sysoft.baseform.process.outer;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
/**
* @author Admin
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class DateUtil {
private static final String DAFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";
/**
* 获得指定日期下周的第一天[周一]
* @param specialDate
* @return
*/
public static Date getFirstDayOfNextWeek(Date specialDate){
Calendar cal = Calendar.getInstance();
cal.setTime(specialDate);
cal.add(Calendar.WEEK_OF_YEAR,1);
cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);
//cal.add(Calendar.DATE,6);
System.out.println(cal.get(Calendar.WEEK_OF_YEAR));
return cal.getTime();
}
/**
* 获得指定日期下周的最后一天[周日],认为下周的下周的周一00点为止
* @param specialDate
* @return
*/
public static Date getLastDayOfNextWeek(Date specialDate){
Calendar cal = Calendar.getInstance();
cal.setTime(specialDate);
cal.add(Calendar.WEEK_OF_YEAR,2);
cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
return cal.getTime();
}
/**
* 获得指定日期上周的第一天[周一]
* @param specialDate
* @return
*/
public static Date getFirstDayOfPreviousWeek(Date specialDate){
Calendar cal = Calendar.getInstance();
cal.setTime(specialDate);
cal.add(Calendar.WEEK_OF_YEAR,-1);
cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);
//cal.add(Calendar.DATE,6);
System.out.println(cal.get(Calendar.WEEK_OF_YEAR));
return cal.getTime();
}
/**
* 获得指定日期上周的最后一天[周日],认为下周的下周的周一00点为止
* @param specialDate
* @return
*/
public static Date getLastDayOfPreviousWeek(Date specialDate){
Calendar cal = Calendar.getInstance();
cal.setTime(specialDate);
//cal.add(Calendar.WEEK_OF_YEAR,-1);
cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
return cal.getTime();
}
/**
* 获得当前日期所在周的周一0点
* @param specialDate
* @return
*/
public static Date getFirstDayOfCurrentWeek(Date specialDate){
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setTime(specialDate);
cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
return cal.getTime();
}
/**
* 获得当前日期所在周的最后时刻,也就是下周一的0点
* @param specialDate
* @return
*/
public static Date getLastDayOfCurrentWeek(Date specialDate){
Calendar cal = Calendar.getInstance();
cal.setTime(specialDate);
cal.add(Calendar.WEEK_OF_YEAR,1);
cal.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
return cal.getTime();
}
//获得指定日期当前周的最后一天,到周日的23:59为止
public static Date getLastDayOfCurrentWeekWithSun(Date date){
Calendar cal = Calendar.getInstance();
cal.setFirstDayOfWeek(Calendar.MONDAY);
cal.setTime(date);
cal.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);
cal.set(Calendar.HOUR_OF_DAY,23);
cal.set(Calendar.MINUTE,59);
cal.set(Calendar.SECOND,59);
return cal.getTime();
}
//从当前日期前推12小时
public static Date getHalfPreviousDayOfCurrentDay(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY,-12);
cal.add(Calendar.SECOND,-1);
return cal.getTime();
}
//下一天,精确到天
public static String getNextDay(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_YEAR,1);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
return format.format(cal.getTime());
}
//下一天,精确到天 参数 String
public static String getNextDay(String date){
Calendar cal = Calendar.getInstance();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
cal.setTime(format.parse(date));
} catch (ParseException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
cal.add(Calendar.DAY_OF_YEAR,1);
return format.format(cal.getTime());
}
//添加 12*len 个小时
public static String add12Hours(Date date,int len){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR,12*len);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(cal.getTime());
}
public static String add24Hours(Date date,int days){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR,24*days);
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return format.format(cal.getTime());
}
public static String add24Hours(Date date,int days,String pattern){
if(date == null)
return "";
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR,24*days);
SimpleDateFormat format = new SimpleDateFormat(pattern == null || pattern.equals("") ? DAFAULT_PATTERN : pattern);
String temp = format.format(cal.getTime());
return temp;
}
//添加 12*len 个小时
public static Date add12HoursReturnDate(Date date,int len){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR,12*len);
//SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return cal.getTime();
}
public static Date add24HoursReturnDate(Date date,int days){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR,24*days);
//SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return cal.getTime();
}
/**
*
* @param date 源日期
* @param days 日子数
* @param type + 或者-
* @return
*/
public static Date plusOrMinusDate(Date date ,int days){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_YEAR, days);
return cal.getTime();
}
//***********************格式转换************************
/**
* 如果Date== null,返回“”;
* 如果pattern== null 默认格式 "yyyy-MM-dd HH:mm:ss";
* @param date
* @param pattern
* @return
*/
public static String dateToString(Date date,String pattern){
if(date == null)
return "";
if(pattern == null || pattern.equals(""))
pattern = DAFAULT_PATTERN;
SimpleDateFormat format = new SimpleDateFormat(pattern);
return format.format(date);
}
public static String dateToWeekWithoutPrefix(Date date,String pattern){
if(date == null)
return "";
if(pattern == null || pattern.equals(""))
pattern = DAFAULT_PATTERN;
SimpleDateFormat format = new SimpleDateFormat(pattern,Locale.CHINESE);
String temp = format.format(date);
if(temp.length()==3)
return temp.substring(2);
return "";
}
public static String prettyDate(String source,String pattern){
if(pattern == null || pattern.equals(""))
pattern = DAFAULT_PATTERN;
SimpleDateFormat format = new SimpleDateFormat(pattern,Locale.CHINESE);
try {
return format.format(format.parse(source));
} catch (ParseException e) {
}
return "";
}
/**
* 采用了默认格式
* @param date
* @return
*/
public static String dateToString(Date date){
if(date == null)
return "";
SimpleDateFormat format = new SimpleDateFormat(DAFAULT_PATTERN);
return format.format(date);
}
public static Date stringToDate(String value,String pattern){
if(value == null || value.trim().equals(""))
return null;
if(pattern == null || pattern.equals(""))
pattern =DAFAULT_PATTERN;
SimpleDateFormat format = new SimpleDateFormat(pattern);
try {
return format.parse(value);
} catch (ParseException e) {
// TODO 自动生成 catch 块
System.out.println("解析字符串到Date错误,请查看是否是格式错误: Value="+value+";pattern="+pattern);
e.printStackTrace();
return null;
}
}
public static String getStartTimeOfThisDay(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
return DateUtil.dateToString(cal.getTime());
}
public static String getStartTimeOfNextDay(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_YEAR, 1);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
return DateUtil.dateToString(cal.getTime());
}
public static String getStartTimeOfNextYear(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR, 1);
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DATE, 1);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
Date dd = cal.getTime();
return DateUtil.dateToString(dd);
}
public static String getStartTimeOfThisYear(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.MONTH, 0);
cal.set(Calendar.DATE, 1);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MINUTE,0);
cal.set(Calendar.SECOND,0);
Date dd = cal.getTime();
return DateUtil.dateToString(dd);
}
/**
* 返回XXX年XX月XX日 星期X 的形式
* @param date
* @return
*/
public static String getCurrentDateAndWeek(Date date){
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH)+1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int week = cal.get(Calendar.DAY_OF_WEEK);
return year+"年"+month+"月"+day+"日" + " 星期"+digitToGBK(week);
}
private static String digitToGBK(int digit){
if( digit<0)
return ""+digit;
switch(digit){
case 0:
return "零";
case 1:
return "一";
case 2:
return "二";
case 3:
return "三";
case 4:
return "四";
case 5:
return "五";
case 6:
return "六";
case 7:
return "七";
case 8:
return "八";
case 9:
return "九";
}
return "";
}
public static void main(String[] args) {
String s = DateUtil.getCurrentDateAndWeek(new Date());
System.out.println(s);
}
}
3.
public class A {
/**
* <b>メソッド概要:</b> 当月的几个月后的最后一天。
*
* @param month
* @return 几个月后的最后一天
*/
public static String monthOfLastDay(int month) {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, month);
calendar.set(Calendar.DAY_OF_MONTH, 1);
calendar.roll(Calendar.DAY_OF_MONTH, -1);
return new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime());
}
public static void main(String[] args) {
System.out.println("下个月月底" + monthOfLastDay(1));
System.out.println("1年1个月月底" + monthOfLastDay(13));
}
}