package com.azcctl.zdjcx.util;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class DateTime {
public static final SimpleDateFormat FORMAT = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
/**
* 比较两日期大小
* @param d1
* @param d2
* @return
*/
/*
*
* --取得当天0时0分0秒
select TRUNC(SYSDATE) FROM dual;
--取得当天23时59分59秒(在当天0时0分0秒的基础上加1天后再减1秒)
SELECT TRUNC(SYSDATE)+1-1/86400 FROM dual;
--取得当前日期是一个星期中的第几天,注意:星期日是第一天
select to_char(sysdate,'D'),to_char(sysdate,'DAY') from dual;
--在oracle中如何得到当天月份的第一天和最后一天
select to_char(sysdate,'yyyy-mm')||'-01' firstday,to_char(last_day(sysdate),'yyyy-mm-dd') lastday from dual
--实现当天16点前数据减去昨天16点的,过了16点减去今天16点
select field1, field2 from mytable
where time = decode(sign(sysdate-trunc(sysdate)-16/24), --时间判断
-1,trunc(sysdate)-1+16/24, --小于16点取昨天16点
trunc(sysdate)+16/24) --大于16点取当天16点
*
*
*
*
*
*
*/
public static int compare(Date d1, Date d2) {
String str1 = FORMAT.format(d1);
System.out.println("str1: " + str1);
String str2 = FORMAT.format(d2);
System.out.println("str2: " + str2);
int result = str1.compareTo(str2);
return result;
/*if (result > 0) {
System.out.println(str1 + " 晚于 " + str2);
} else if (result == 0) {
System.out.println(str1 + " 等于 " + str2);
} else {
System.out.println(str1 + " 早于 " + str2);
} */
}
/**
* 获取当天23:59:59
* @return
*/
public static Date getBeforZeroTime() {
Date beforZeroDate = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH, 0);
try {
beforZeroDate = sdf2.parse(sdf.format(c.getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
return beforZeroDate;
}
/**
* 获取当天00:00:00
* @return
*/
public static Date getZeroTime() {
Date zeroDate = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH, 0);
try {
zeroDate = sdf.parse(sdf.format(c.getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
return zeroDate;
}
/**
* 输入时、分、秒,转换为小时返回
* @param Hour
* @param minutes
* @param sec
* @return
*/
public static double getHours(double Hour,double minutes,double sec) {
double hours = Hour+minutes/60+sec/3600;
return hours;
}
/*
* 得到当前时间
*/
public static String getNowTime(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Timestamp nowTimestamp = new Timestamp(new Date().getTime());
String nowTime = sdf.format(new java.util.Date(nowTimestamp.getTime()));
return nowTime;
}
/*
* 得到当前时间
*/
public static String getNowDate(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Timestamp nowTimestamp = new Timestamp(new Date().getTime());
String nowTime = sdf.format(new java.util.Date(nowTimestamp.getTime()));
return nowTime;
}
/*
* formate date
*/
public static String getFormatDate(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.CHINA);
String dateStr = sdf.format(date);
return dateStr;
}
public static String getTimeSS(){
String str = "";
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmss");
Calendar lastDate = Calendar.getInstance();
str=sdf.format(lastDate.getTime());
return str;
}
/*
* string to date
*/
public static Date StrToDate(String str){
SimpleDateFormat sdf = null;
Date date = null;
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
date = sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
public static Date stringToDate(String str) {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
// Fri Feb 24 00:00:00 CST 2012
date = format.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
// 2012-02-24
//date = java.sql.Date.valueOf(str);
return date;
}
public String getCurrentDate(){
Date date = new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String years= sdf.format(date);
return years;
}
// 2011-04-13 09:41 java 判断今天 昨天 前天...
public String parseDate(String createTime){
try {
String ret = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long create = sdf.parse(createTime).getTime();
Calendar now = Calendar.getInstance();
long ms = 1000*(now.get(Calendar.HOUR_OF_DAY)*3600+now.get(Calendar.MINUTE)*60+now.get(Calendar.SECOND));//毫秒数
long ms_now = now.getTimeInMillis();
if(ms_now-create<ms){
ret = "今天";
}else if(ms_now-create<(ms+24*3600*1000)){
ret = "昨天";
}else if(ms_now-create<(ms+24*3600*1000*2)){
ret = "前天";
}else{
ret= "更早";
}
return ret;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}