package com.slcf.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateTimeUtil {
static SimpleDateFormat sdfLongTime = new SimpleDateFormat("yyyyMMddHHmmssSSS");
static SimpleDateFormat sdfTime = new SimpleDateFormat("yyyyMMddHHmmss");
static SimpleDateFormat sdfDate = new SimpleDateFormat("yyyyMMdd");
static SimpleDateFormat ddfLongTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
static SimpleDateFormat ddfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
static SimpleDateFormat ddfDate = new SimpleDateFormat("yyyy-MM-dd");
static Calendar calendar = Calendar.getInstance();
/**
* 获取当前日期时间
* 传入参数为整数8,10,14,17,19,23
* 根据传入长度返回8,10,14,17,19,23的字符串日期值
* 8 yyyyMMdd
* 10 yyyy-MM-dd
* 14 yyyyMMddHHmmss
* 17 yyyyMMddHHmmssSSS
* 19 yyyy-MM-dd HH:mm:ss
* 23 yyyy-MM-dd HH:mm:ss:SSS
**/
public static String getStringDateTime(int len){
Date date=new Date();
String cdate="";
if (len == 17) {
cdate = sdfLongTime.format(date);
} else if (len == 14) {
cdate = sdfTime.format(date);
} else if (len == 8) {
cdate = sdfDate.format(date);
} else if (len == 19) {
cdate = ddfTime.format(date);
} else if (len == 23) {
cdate = ddfLongTime.format(date);
} else if (len == 10) {
cdate = ddfDate.format(date);
}
return cdate;
}
/**
* 字符串转时间
* @param dateString 传入的时间字符串
* @param len 取值如下
* 8 yyyyMMdd
* 10 yyyy-MM-dd
* 14 yyyyMMddHHmmss
* 17 yyyyMMddHHmmssSSS
* 19 yyyy-MM-dd HH:mm:ss
* 23 yyyy-MM-dd HH:mm:ss:SSS
* @return
*/
public static Date stringToDate(String dateString,int len){
Date date = null;
try {
if (len == 17) {
date = sdfLongTime.parse(dateString);
} else if (len == 14) {
date = sdfTime.parse(dateString);
} else if (len == 8) {
date = sdfDate.parse(dateString);
} else if (len == 19) {
date = ddfTime.parse(dateString);
} else if (len == 23) {
date = ddfLongTime.parse(dateString);
} else if (len == 10) {
date = ddfDate.parse(dateString);
}
} catch (Exception e) {
return null;
}
return date;
}
/**
* 把传入的时间转化为字符串
* @param date
* @param len
* @return
*/
public static String dateToStr(Date date,int len){
if(date == null){
return null;
}
String cdate="";
if(len==17){
cdate=sdfLongTime.format(date);
}else if(len==14){
cdate=sdfTime.format(date);
}else if(len==8){
cdate=sdfDate.format(date);
}else if(len==19){
cdate = ddfTime.format(date);
}
return cdate;
}
/**
*
* @param Idate数据
* @param len需要剪切的长度
* @return剪切后返回String类型
*/
public static String getSubStringDateTime(String Idate,int len){
String rDate="";
if(Idate!=null && !Idate.equals("")){
if(len==17){
rDate=Idate;
}else if(len==14){
rDate=Idate.substring(0,len);
}else if(len==8){
rDate=Idate.substring(0,len);
}
}
return rDate;
}
/**
* 入参是string 日期时间类型如2012-06-08 10:00,2012-06-08等,len是长度
* @param date
* @return返回输入的同等长度时间
*/
public static String getHourMinue(String date,int len){
Date date1=new Date();
String sDate="";
date=date.trim();
if(date!=null){
if(date.indexOf("-")>-1){
try {
if(len==14){
date1=ddfTime.parse(date);
sDate=sdfTime.format(date1);
}else if(len==8){
date1=ddfDate.parse(date);
sDate=sdfDate.format(date1);
}else if(len==17){
date1=ddfLongTime.parse(date);
sDate=sdfLongTime.format(date1);
}
} catch (ParseException e) {
e.printStackTrace();
}
}else{
sDate=date;
}
}
return sDate;
}
/**
* 截取
* 入参是string 日期时间类型如20120608100000,len是长度14,8,17
* @param date
* @return返回输入的同等长度时间
*/
public static String getDateSubString(String date,int len){
if(date!=null&&len>0){
if(len==14){
return date.substring(0,14);
}else if(len==8){
return date.substring(0,8);
}else if(len==6){
return date.substring(0,6);
}
}
return null;
}
/**
* 将数据库的string日期类型转成日期格式,len是按长度转换
* 入参如20010101返回2001-01-01
* @param date
* @param len
* @return
*/
public static String getStringToDate(String date,int len){
String strTodate="";
if(date!=""){
if(len==8){
try {
strTodate=ddfDate.format(sdfDate.parse(date));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(len==14){
try {
strTodate=ddfTime.format(sdfTime.parse(date));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else if(len==17){
try {
strTodate=ddfLongTime.format(sdfLongTime.parse(date));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return strTodate;
}
/**
* 与当前天差几天的某天
* @param days 相差的天数
* @return 返回的时间格式为20120827
*/
public static String getDate(int days){
calendar.add(Calendar.DAY_OF_MONTH, days);
Date date = calendar.getTime();
String day = sdfDate.format(date);
return day;
}
/**
* 指定某天的开始和结束时间
* @param date 格式20120827
* @return
*/
public static String[] getDateStartAndEnd(String date){
if(date == null || date.length()<1){
return null;
}
String[] dates = new String[2];
dates[0] = date+"0000000";
dates[1] = date+"2359599";
return dates;
}
/**
* 相差几天的某天的起始时间
* @return
*/
public static String[] getStartAndEnd(int days){
calendar.add(Calendar.DAY_OF_MONTH, days);
Date date = calendar.getTime();
String day = sdfDate.format(date);
String[] dates = new String[2];
dates[0] = day+"000000";
dates[1] = day+"235959";
return dates;
}
/**
* 今天是礼拜几
* 0-星期日
* 6-星期六
* @return
*/
public static int getweekday(){
int weekday = calendar.get(Calendar.DAY_OF_WEEK);
weekday -=1;
return weekday;
}
/**
* 当前时间是几点(24HH)
*/
public static int gethour(){
return calendar.get(Calendar.HOUR_OF_DAY);
}
/**
* 当前是几月
* @return
*/
public static int getmonth(){
return calendar.get(Calendar.MONTH)+1;
}
/**
* 当前年份
* @return
*/
public static int getyear(){
return calendar.get(Calendar.YEAR);
}
/**
* 得到某年某月的第一天
* @param year
* @param month
* @return yyyy-MM-dd HH:mm:ss
*/
public static String getFirstDayOfMonth(int year, int month) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month - 1);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getMinimum(Calendar.DATE));
return ddfTime.format(calendar.getTime());
}
/**
* 得到某年某月的最后一天
*
* @param year
* @param month
* @return
*/
public static String getLastDayOfMonth(int year, int month) {
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month - 1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
int value = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH, value);
return ddfTime.format(calendar.getTime());
}
/**
* 获取指定年、月的开始日期和结束日期
* @param month
* @return String[0]=2013-12-01 00:00:00
String[1] 2013-12-31 23:59:59
*/
public static String[] getMonthStartEndDay(int year,int month){
String[] days = new String[2];
days[0] = getFirstDayOfMonth(year, month);
days[1] = getLastDayOfMonth(year, month);
return days;
}
/**
* 解析毫秒
* @param msec
* @return x天x时x分x秒
*/
public static String analyzeMsec(Long msec){
if(msec == null || msec <= 0){
return "0";
}
String strSen = null;
String strMin = null;
String strHor = null;
String strDay = null;
Long sens = msec/1000;
if(sens > 60){//秒
Long senmod = sens%60;
if(senmod > 0){
strSen = senmod+"秒";
}else{
strSen = "0秒";
}
Long mins = sens/60;
if(mins > 60){//分
Long minmod = mins%60;
if(minmod > 0){
strMin = minmod+"分";
}else{
strMin = "0分";
}
Long hors = mins/60;
if(hors > 24){//小时
Long hormod = hors%24;
if(hormod > 0){
strHor = hormod + "时";
}else{
strHor = "0时";
}
strDay = (hors/24)+"天";
}else{
strHor = hors+"时";
}
}else{
strMin = mins+"分";
}
}else{
strSen=sens+"秒";
}
StringBuffer sb = new StringBuffer();
if(strDay != null){
sb.append(strDay);
}
if(strHor != null){
sb.append(strHor);
}
if(strMin != null){
sb.append(strMin);
}
if(strSen != null){
sb.append(strSen);
}
return sb.toString();
}
public static void main(String[] args){
Long a = 15265845L;
// float b = a/1000f;
// b = Math.round(b);
// Long min = b%60;
String d = DateTimeUtil.analyzeMsec(a);
System.out.println(d+"==");
// System.out.println(new DateTimeUtil().getyear());
// String ftppath = "/material/staticpage/b17d38a1-e8ea-4dbf-8265-d4eb44836c80.rar";
// String xmlpath = ftppath.substring(0, ftppath.lastIndexOf("."));
// System.out.println(xmlpath);
// String[] a = getStartAndEnd(-1);
// System.out.println(a[0]+"==="+a[1]);
// String pw = "";
// for (int i = 0; i < 1; i++)
// {
// char c = (char) (int) (97);
// pw += c;
// }
// System.out.println(pw.toUpperCase());
// String a="20120628010101001";
// try {
// String b=ddfLongTime.format(sdfLongTime.parse(a));
// System.out.println(b);
// } catch (ParseException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// String a = "A11";
// String _a=a.substring(a.length()-3,1);
// String b=String.valueOf(Integer.parseInt(a.substring(a.length()-2))+1);
// if(b.length()<2){
// b="0"+b;
// }
// char _b=_a.charAt(0);
// System.out.println(_a);
// System.out.println((char)(((int)a.substring(a.length()-3).substring(0,1).charAt(0))+1));
// if(){
//
// }
}
}