package com.todayinfo.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
/**
* 日期工具类
*
* @author longtao.li
*
*/
public class DateUtils {
/**
* 获取格林威治时间(unix时间戳 即1970年至今的秒数)
*
*/
public static long getGMTime() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("Etc/Greenwich"));
String format = sdf.format(new Date());
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date gmDate = null;
try {
gmDate = sdf1.parse(format);
} catch (ParseException e) {
e.printStackTrace();
}
return gmDate.getTime() / 1000;
}
/**
* 获取格林威治时间(unix时间戳 即1970年至今的秒数)
*
*/
public static long _getGMTime() {
int round = (int) (System.currentTimeMillis() / 1000);
return round;
}
/**
* 获取时间时间
*
* @return
*/
public static String getCurrentTime() {
String time = null;
long round = System.currentTimeMillis() / 1000;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sdf.format(round * 1000);
String[] split = date.split("\\s");
if (split.length > 1) {
time = split[1];
}
return time;
}
/**
* 得到昨天的日期
*
* @return
*/
public static String getYestoryDate() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String yestoday = sdf.format(calendar.getTime());
return yestoday;
}
/**
* 得到明天的日期
*
* @return
*/
public static String getTomorrowDate() {
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, 1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String tomorrow = sdf.format(calendar.getTime());
return tomorrow;
}
/**
* 得到今天的日期
*
* @return
*/
public static String getTodayDate() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(new Date());
return date;
}
/**
* 时间戳转化为时间格式
*
* @param timeStamp
* @return
*/
public static String timeStampToStr(long timeStamp) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sdf.format(timeStamp * 1000);
return date;
}
/**
* 时间戳转化为时间格式
*
* @param timeStamp
* @return
*/
public static String timeStampToStr1(long timeStamp) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String date = sdf.format(timeStamp * 1000);
return date;
}
/**
* 时间戳转化为时间(几点)
*
* @param timeStamp
* @return
*/
public static String timeStampToTime(long timeStamp) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String date = sdf.format(timeStamp * 1000);
return date;
}
/**
* 将日期格式转化为时间戳(秒数)
* @param time
* @return
*/
public static long getStringToDate(String time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date = new Date();
try {
date = sdf.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
return date.getTime()/1000;
}
/**
* 将日期格式转化为时间戳(秒数)
* @param time
* @return
*/
public static long getString2Date(String time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
try {
date = sdf.parse(time);
} catch (ParseException e) {
e.printStackTrace();
}
return date.getTime()/1000;
}
/**
* 判断是否大于当前时间
* @param time
* @return
*/
public static boolean judgeCurrTime(String time) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date = new Date();
try {
date = sdf.parse(time);
long t = date.getTime();
long round = System.currentTimeMillis();
if ( t-round > 0 ) {
return true;
} else {
return false;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* 判断是否大于当前时间
* @param time
* @return
*/
public static boolean judgeCurrTime(long time) {
long round = System.currentTimeMillis();
if (time - round > 0) {
return true;
} else {
return false;
}
}
/**
* 比较后面的时间是否大于前面的时间
* @param time
* @return
*/
public static boolean judgeTime2Time(String time1, String time2) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try {
Date date1 = sdf.parse(time1);
Date date2 = sdf.parse(time2);
long l1 = date1.getTime()/1000;
long l2 = date2.getTime()/1000;
if ( l2-l1 > 0 ) {
return true;
} else {
return false;
}
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}
/**
* 得到日期 yyyy-MM-dd
*
* @param timeStamp
* 时间戳
* @return
*/
public static String formatDate(long timeStamp) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(timeStamp * 1000);
return date;
}
/**
* 得到时间 HH:mm:ss
*
* @param timeStamp
* 时间戳
* @return
*/
public static String getTime(long timeStamp) {
String time = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sdf.format(timeStamp * 1000);
String[] split = date.split("\\s");
if (split.length > 1) {
time = split[1];
}
return time;
}
/**
* 将一个时间戳转换成提示性时间字符串,如刚刚,1秒前
*
* @param timeStamp
* @return
*/
public static String convertTimeToFormat(long timeStamp) {
long curTime = System.currentTimeMillis() / (long) 1000;
long time = curTime - timeStamp;
if (time < 60 && time >= 0) {
return "刚刚";
} else if (time >= 60 && time < 3600) {
return time / 60 + "分钟前";
} else if (time >= 3600 && time < 3600 * 24) {
return time / 3600 + "小时前";
} else if (time >= 3600 * 24 && time < 3600 * 24 * 30) {
return time / 3600 / 24 + "天前";
} else if (time >= 3600 * 24 * 30 && time < 3600 * 24 * 30 * 12) {
return time / 3600 / 24 / 30 + "个月前";
} else if (time >= 3600 * 24 * 30 * 12) {
return time / 3600 / 24 / 30 / 12 + "年前";
} else {
return "刚刚";
}
}
/**
* 将一个时间戳转换成提示性时间字符串,(多少分钟)
*
* @param timeStamp
* @return
*/
public static String timeStampToFormat(long timeStamp) {
long curTime = System.currentTimeMillis() / (long) 1000;
long time = curTime - timeStamp;
return time / 60 + "";
}
/**
* 获得当前时间差
*
* @param timeStamp
* @return
*/
public static int nowCurrentTime(long timeStamp) {
long curTime = System.currentTimeMillis() / (long) 1000;
long time = timeStamp - curTime;
return (int) time;
}
/**
*
* @return
*/
public static String nowCurrentPoint(boolean flag) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String date = sdf.format(System.currentTimeMillis());
String[] split = date.split(":");
String hour = null;
String minute = null;
if ( flag ) {
if (split.length > 1) {
hour = split[0];
return hour;
}
} else {
if (split.length > 1) {
minute = split[1];
return minute;
}
}
return null;
}
/**
* 将标准时间格式HH:mm:ss化为当前的时间差值
*
* @param str
* @return
*/
public static String StandardFormatStr(String str) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date d = sdf.parse(str);
long timeStamp = d.getTime();
long curTime = System.currentTimeMillis() / (long) 1000;
long time = curTime - timeStamp / 1000;
return time / 60 + "";
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static final int WEEKDAYS = 7;
public static String[] WEEK = { "周日", "周一", "周二", "周三",
"周四", "周五", "周六" };
/**
* 日期变量转成对应的星期字符串
*
* @param date
* @return
*/
public static String DateToWeek(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int dayIndex = calendar.get(Calendar.DAY_OF_WEEK);
if (dayIndex < 1 || dayIndex > WEEKDAYS) {
return null;
}
return WEEK[dayIndex - 1];
}
/**
* 日期变量转成对应的星期字符串
*
* @param date
* @return
*/
public static String DateToWeek(long timeStamp) {
Date date = new Date(timeStamp);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int dayIndex = calendar.get(Calendar.DAY_OF_WEEK);
if (dayIndex < 1 || dayIndex > WEEKDAYS) {
return null;
}
return WEEK[dayIndex - 1];
}
public static String convertGMTToLoacale(String gmt){
String s1 = gmt.substring(0, 10);
String s2 = gmt.substring(11, 19);
return s1 + " " + s2;
}
}