import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Datex {
public static String getSeqDateTime() {
return new java.text.SimpleDateFormat("yyyyMMddHHmmss")
.format(new Date());
}
public static String getSeqDate() {
return new java.text.SimpleDateFormat("yyyyMMdd")
.format(new Date());
}
public static String getMonth () {
return new java.text.SimpleDateFormat("yyyy-MM")
.format(new Date());
}
/**
* 當前日期 - 字符串
*/
public static String getStrDate(){
return new java.text.SimpleDateFormat("yyyy-MM-dd")
.format(new Date());
}
/**
*
* 日期 - 字符串
*/
public static String getStrDate(Date date){
return new java.text.SimpleDateFormat("yyyy-MM-dd")
.format(date);
}
/**
*
* 當前日期時間 - 字符串
*/
public static String getStrDateTime(){
return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(new Date());
}
/**
*
* 日期時間 - 字符串
*/
public static String getStrDateTime(Date date){
return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(date);
}
/**
*
* @return 返回當前Date()
*/
public static Date getDate(){
return new Date();
}
/**
* 字符串 - 日期時間
* @param yyyy-MM-dd HH:mm:ss
* @return Date
*/
public static Date getDateTime(String datetime){
java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = null;
try {
d = sd.parse(datetime);
} catch (ParseException e) {
e.printStackTrace();
}
return d;
}
/**
* 字符串 - 日期
* @param yyyy-MM-dd
* @return Date
*/
public static Date getDate(String date){
java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
Date d = null;
try {
d = sd.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return d;
}
/**
* 日期加減
* @param date 日期
* @param count 加的天數,可以爲負
* @return 日期字符串
*/
public static String addDate(String date,int count){
Calendar c = Calendar.getInstance();
c.setTime(Datex.getDate(date));
c.add(Calendar.DATE, count);
return getStrDate(c.getTime());
}
/**
* 日期時間加減
* @param datetime 日期時間
* @param count 加多少,可以爲負
* @param type 加的類型,Calendar.DATE或其他
* @return 日期時間字符串
*/
public static String addDateTime(String datetime,int count,int type){
Calendar c = Calendar.getInstance();
c.setTime(Datex.getDateTime(datetime));
c.add(type, count);
return getStrDateTime(c.getTime());
}
/**
* 日期間隔多少天
* @param date1 前日期
* @param date2 後日期
* @return
*/
public static int intervalDay(String date1,String date2){
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(date1));
long time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(date2));
long time2 = cal.getTimeInMillis();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
int i = Integer.parseInt(String.valueOf(between_days));
return i;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 過了多少小時
* @param datetime 之前日期時間
* @return
*/
public static int intervalHour(String datetime){
try {
long now = new Date().getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d2 = sdf.parse(datetime);
long before = d2.getTime();
long between_hour = (now - before) / (1000 * 3600);
int i = Integer.parseInt(String.valueOf(between_hour));
// System.out.println(before + "," + now + ",i=" + i);
return i;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 返回時間描述:如“剛剛”,“10分鐘前”
* @param 字符串datetime
* @return
*/
public static String getDateTimeState(String datetime){
Date d = new Date();
java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d2 = null;
String r = "";
try {
d2 = sd.parse(datetime);
long l = d.getTime() - d2.getTime();
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24);
long min=((l/(60*1000))-day*24*60-hour*60);
if(day > 0){
r = day + "天前";
}else if(hour > 0 ){
r = hour+"小時前";
}else if(min > 0){
r = min+"分前";
}else{
r = "剛剛";
}
} catch (ParseException e) {
e.printStackTrace();
}
return r;
}
/**
* 返回截止時間
* @param 字符串datetime
* @return
*/
public static String getDateTimeLimit(String datetime){
Date d = new Date();
java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d2 = null;
String r = "";
try {
if(datetime.length() == 16) datetime = datetime + ":00";
if(datetime.length() == 10) datetime = datetime + " 00:00:00";
d2 = sd.parse(datetime);
long l = d2.getTime() - d.getTime();//跟時間描述反過來
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24);
long min=((l/(60*1000))-day*24*60-hour*60);
long sec=((l/1000)-day*24*60*60-hour*60*60-min*60);
if(day > 0){
r = "剩餘" + day + "天截止";
}else if(hour > 0 ){
r = "剩餘" + hour + "小時截止";
}else if(min > 0){
r = "剩餘" + min + "分鐘截止";
}else if(sec > 0){
r = "剩餘" + sec + "秒截止";
}else{
r = "已截止";
}
} catch (ParseException e) {
e.printStackTrace();
}
return r;
}
/**
* 返回截止時間
* @param 字符串datetime
* @return
*/
public static String getDateTimeLimit_withHour(String datetime){
Date d = new Date();
java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d2 = null;
StringBuilder sb = new StringBuilder();
try {
if(datetime.length() == 16) datetime = datetime + ":59";
if(datetime.length() == 10) datetime = datetime + " 23:59:59";
d2 = sd.parse(datetime);
long l = d2.getTime() - d.getTime();//跟時間描述反過來
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24);
long min=((l/(60*1000))-day*24*60-hour*60);
long sec=((l/1000)-day*24*60*60-hour*60*60-min*60);
if(day > 0){
sb.append(day+"天");
if(hour > 0 ){
sb.append(hour+"小時");
}
}else if(hour > 0 ){
sb.append(hour+"小時");
if(min > 0){
sb.append(min+"分鐘");
}
}else if(min > 0){
sb.append(min+"分鐘");
if(sec > 0){
sb.append(sec+"秒");
}
}else if(sec > 0){
sb.append(sec+"秒");
}else{
sb.append("");
}
} catch (ParseException e) {
e.printStackTrace();
}
return sb.toString();
}
/**
* 獲取到截止日期的時間
* @param datetime
* @return
*/
@SuppressWarnings("unused")
public static long getDeadLineHours(String datetime){
Date d = new Date();
java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d2 = null;
long sb = 0;
try {
if(datetime.length() == 16) datetime = datetime + ":59";
if(datetime.length() == 10) datetime = datetime + " 23:59:59";
d2 = sd.parse(datetime);
long l = d2.getTime() - d.getTime();//跟時間描述反過來
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24);
long min=((l/(60*1000))-day*24*60-hour*60);
long sec=((l/1000)-day*24*60*60-hour*60*60-min*60);
if(day > 0){
sb=day*24;
if(hour > 0 ){
sb=sb+hour;
}
}else if(hour > 0 ){
sb=hour;
}
} catch (ParseException e) {
e.printStackTrace();
}
return sb;
}
/**
* 獲取到截止日期的天數
* @param datetime
* @return
*/
@SuppressWarnings("unused")
public static long getDeadLineDays(String datetime){
Date d = new Date();
java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d2 = null;
long sb = 0;
try {
if(datetime.length() == 16) datetime = datetime + ":59";
if(datetime.length() == 10) datetime = datetime + " 23:59:59";
d2 = sd.parse(datetime);
long l = d2.getTime() - d.getTime();//跟時間描述反過來
long day=l/(24*60*60*1000);
sb=day;
} catch (ParseException e) {
e.printStackTrace();
}
return sb;
}
/**
* 返回日期描述:如“今天”,“昨天”,“明天”,日期
* @param datetime
* @return
*/
public static String getDateState(String date){
java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
Date d2 = null;
String r = "";
try {
Date d = sd.parse(Datex.getStrDate());
d2 = sd.parse(date);
long l = d.getTime() - d2.getTime();
long day=l/(24*60*60*1000);
if(day == 0){
r = "今天";
}else if(day == -1){
r = "明天";
}else if(day == 1){
r = "昨天";
}else{
r = date;
}
} catch (ParseException e) {
e.printStackTrace();
}
return r;
}
/**
* yyyy年MM月dd日 HH:mm
* @return
*/
public static String changeStr(String str){
Date d = getDateTime(str);
String s = new java.text.SimpleDateFormat("yyyy年MM月dd日 HH:mm")
.format(d);
return s;
}
public static Integer compareDateTime(String datetime1,String datetime2){
java.text.SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//獲取Calendar實例
Calendar currentTime = Calendar.getInstance();
Calendar compareTime = Calendar.getInstance();
try {
//把字符串轉成日期類型
currentTime.setTime(df.parse(datetime1));
compareTime.setTime(df.parse(datetime2));
} catch (ParseException e) {
e.printStackTrace();
}
//利用Calendar的方法比較大小
Integer i;
if (currentTime.compareTo(compareTime) > 0) {
i=1;
}else if(currentTime.compareTo(compareTime)==0){
i=0;
}else{
i=-1;
}
return i;
}
/**
* 返回周幾,週日=1,週一=2
* @param cdate yyyy-MM-dd
* @return
*/
public static int getWeek(String cdate){
try {
java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(sd.parse(cdate));
return c.get(Calendar.DAY_OF_WEEK);
} catch (ParseException e) {
e.printStackTrace();
return 0;
}
}
/**
* 返回今天第幾周,如:201719
* @param cdate,日期如2017-04-17
* @return
*/
public static String getYearWeek(String cdate){
try {
java.text.SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
Calendar c=Calendar.getInstance();
c.setTime(sd.parse(cdate));
return c.get(Calendar.YEAR) + "" + c.get(Calendar.WEEK_OF_YEAR);
}catch (ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* 返回周幾字符串
* @param cdate yyyy-MM-dd
* @return
*/
public static String getWeekStr(String cdate){
int i = getWeek(cdate);
switch (i) {
case 1:
return "星期天";
case 2:
return "星期一";
case 3:
return "星期二";
case 4:
return "星期三";
case 5:
return "星期四";
case 6:
return "星期五";
case 7:
return "星期六";
default:
return "";
}
}
public static void main(String[] args) throws ParseException {
int i = getWeek("2019-08-07");
System.out.println(getStrDate());
}
}