安卓开发中常用的时间戳与日期转换工具类
时间戳转年月日时分秒
获取单独的年 月 日 时 分 秒 星期
距离某个日期的时间 精确到秒
public class DateUtils {
private static final String TAG="DateUtils";
public interface IOnTimeSelectListener{
void onTimeSelectListener(Date date,View v);
}
private static TimePickerView pvCustomTime;
/**
* 日期字符串转10位时间戳
* @param dateStr
* @param sdr
* @return
*/
public static long dateStr2Timestamp(String dateStr,SimpleDateFormat sdr) {
Date date;
long timeStamp=0;
try {
date = sdr.parse(dateStr);
timeStamp= date.getTime()/1000;
} catch (Exception e) {
e.printStackTrace();
}
return timeStamp;
}
/**
* 例:转化为 为yyyy-MM-dd HH:mm:ss 格式 dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
* ============================时间戳转换===========================
* @param createTime 时间戳 10位(字符串)
* @return
*/
public static String getSimpleDateTime(String createTime,SimpleDateFormat dateFormat) {
//将服务器换回的String 时间戳转换成long类型数据
if (null==createTime||createTime.isEmpty()){
return "";
}
if (createTime.length()!=10){
return createTime;
}
try {
long time = Long.parseLong(createTime);
long issueTime = new Date(time * 1000).getTime();//发布时毫秒
String timeStamp = dateFormat.format(new Date(issueTime));//例 yyyy-MM-dd HH:mm:ss 格式
return timeStamp;
}catch (NumberFormatException e){
}
return createTime;
}
/**
* ============================时间戳转换===========================
* 例:yyyy-MM-dd HH:mm:ss 格式
* @param createTime 时间戳 13位 long
* @return
*/
public static String getSimpleDateTime(long createTime, SimpleDateFormat dateFormat) {
if (createTime<=0){
return "";
}
if (createTime+"".length()!=13){
return createTime+"";
}
try {
String timeStamp = dateFormat.format(new Date(createTime));//例 yyyy-MM-dd HH:mm:ss 格式
return timeStamp;
}catch (NumberFormatException e){
Log.e(TAG, "getSimpleDateTime: "+e.toString() );
}
return createTime+"";
}
/**
* 获取日期和星期
* @param timeStamp 时间戳
* @return 2021-01-01 星期三
*/
public static String getDateAndWeek(long timeStamp){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd EEEE", Locale.CHINA);
String timeStr="";
try {
timeStr = sdf.format(timeStamp);
} catch (NumberFormatException e) {
e.printStackTrace();
}
return timeStr;
}
/**
* 获取日期和星期
* @param date
* @return 2021-01-01 星期三
*/
public static String getDateAndWeek(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd EEEE",Locale.CHINA);
return sdf.format(date);
}
//获取今天是星期几
public static String getWeekOfDate(Date date) {
String[] weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return weekDays[w];
}
/**
* 获取今天是星期几
* @param time 10位时间戳
* @return
*/
public static String getWeekOfDate(long time) {
Date date=new Date(time*1000);
String[] weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return weekDays[w];
}
public static int getYear(){
Calendar calendar=Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
return year;
}
public static int getMonth(){
Calendar calendar=Calendar.getInstance();
int month = calendar.get(Calendar.MONTH)+1;
return month;
}
public static int getDay(){
Calendar calendar=Calendar.getInstance();
int day = calendar.get(Calendar.DAY_OF_MONTH);
return day;
}
public static int getHour(){
Calendar calendar=Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
return hour;
}
public static int getHour(long mills){
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(mills);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
return hour;
}
public static int getMinute(){
Calendar calendar=Calendar.getInstance();
int min = calendar.get(Calendar.MINUTE);
return min;
}
public static int getMinute(long mills){
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(mills);
int min = calendar.get(Calendar.MINUTE);
return min;
}
public static int getSecond(){
Calendar calendar=Calendar.getInstance();
int sec = calendar.get(Calendar.SECOND);
return sec;
}
public static int getSecond(long mills){
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(mills);
int sec = calendar.get(Calendar.SECOND);
return sec;
}
/**
* 获取参数时间距今多少天
* @param time 天数
* @return
*/
public static int getBeforePresentDay(String time){
if (TextUtils.isEmpty(time)){
return 0;
}
if (time.length()!=10){
return 0;
}
try {
long bTime = Long.parseLong(time)*1000;
long dayMills=1000*60*60*24;//一天的毫秒数
long oldHour=getHour(bTime)*60*60*1000;
long oldMin=getMinute(bTime)*60*1000;
long oldSec=getSecond(bTime)*60*1000;
long cTime = System.currentTimeMillis();//当前时间
long vTime=cTime-bTime;
long remain=vTime%dayMills;//余数
int count= (int) (vTime/dayMills);
// Log.e("cpdd", "getBeforePresentDay: "+oldHour+"***"+oldMin+"***"+oldSec );
if(remain>(dayMills-oldHour-oldMin-oldSec)){
//余数+设置时的时间超过设置时间晚上12点 算一天
count+=1;
}
return count;
}catch (Exception e){
}
return 0;
}
/**
* 获取第二年情人节的时间戳
* @return
*/
public static long getNextValentineDayTimeStamp(){
int year = getYear();
long timestamp = dateStr2Timestamp( (year + 1) + "-02-14", new SimpleDateFormat("yyyy-MM-dd"));
return timestamp*1000;
}
}