DateUtils.before(date, date2)
/*比较时间戳*/
DateUtils.after(System.currentTimeMillis(), 121321324548L)
/*使用时间字符串比较*/
DateUtils.after("2018-08-22 10:13", "2018-09-01 10:13")
/*还可以指定格式*/
DateUtils.after("2018-08-22 10:13", "2018-09-01 10:13", "yyyy-MM-dd HH:mm:ss")
还可以比较多个时间大小
/*获取最大的时间*/
DateUtils.compareAfter(date, date2, date3, date4)
/*获取最小的时间*/
DateUtils.compareBefore(date, date2, date3, date4)
date可以为Date、Long、String
二、格式化时间-(两种方式)
1、使用自带的SimpleDateFormat
/*格式化为Date*/
val resultDate = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).parse("2018-08-22 10:13")
/*格式化为Long*/
val resultLong=SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).parse("2018-08-22 10:13").time
/*格式化为String*/
val resultString=SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).format(date)
2、使用工具类(
推荐
)
/*格式化为时间*/
DateUtils.formatToDate(System.currentTimeMillis())
/*也可以指定格式*/
DateUtils.formatToDate("2018-08-22 10:13", "yyyy-MM-dd HH:mm:ss")
/*可以输出为多种格式*/
DateUtils.formatToLong(date)
DateUtils.formatToLong("2018-08-22 10:13")
DateUtils.formatToLong("2018-08-22 10:13", "yyyy-MM-dd HH:mm:ss")
DateUtils.formatToStr(date,"yyyy-MM-dd HH:mm:ss")
DateUtils.formatToStr(System.currentTimeMillis())
三、格式化两个时间大小差值
将两个时间戳相减,得到之间的差值,得到差值,再进行格式化。
public static final long SECOND = 1000;
public static final long MINUTE = SECOND * 60;
public static final long HOURS = MINUTE * 60;
public static final long DAY = HOURS * 24;
* 格式化时间差
* @param timestamp
* @param postfix 前缀
* @param postfix 后缀
fun formatDateDifference(timestamp: Long, prefix: String, postfix: String): String {
val day = timestamp / DateUtils.DAY
val hour = (timestamp - DateUtils.DAY * day) / DateUtils.HOURS
val minute = (timestamp - DateUtils.DAY * day - DateUtils.HOURS * hour) / DateUtils.MINUTE
val second = (timestamp - DateUtils.DAY * day - DateUtils.HOURS * hour - DateUtils.MINUTE * minute) / DateUtils.SECOND
return when {
day > 0 -> String.format("$prefix%s天%s时%s分%s秒$postfix", day, hour, minute, second)
hour > 0 -> String.format("$prefix%s时%s分%s秒$postfix", hour, minute, second)
minute > 0 -> String.format("$prefix%s分%s秒$postfix", minute, second)
else -> String.format("$prefix%s秒$postfix", second)
formatDateDifference(date.time - date2.time, "还有:", "就可以采摘啦")
四、格式化秒表
/*50毫秒*/
Log2.e(DateUtils.formatDateStopwatch(DateUtils.MILLISECOND * 50))
/*1天零2小时*/
Log2.e(DateUtils.formatDateStopwatch(DateUtils.DAY * 1 + DateUtils.HOURS * 2))
Log2.e(DateUtils.formatDateStopwatch(DateUtils.SECOND * 179 + DateUtils.MINUTE * 1 + DateUtils.MILLISECOND * 10))
Log2.e(DateUtils.formatDateStopwatch((DateUtils.SECOND * 1.5).toLong()))
00:00,050
01 02:00:00,000
03:59,010
00:01,500
* 格式化秒表
* 有天的 02 11:11:12,534
* 有时的 11:11:12,534
* 有分的 11:12,534
* 有秒的 11:12,534
* 有毫秒 11:12,534
* @param timestamp 单位毫秒
fun formatDateStopwatch(timestamp: Long): String {
return if (timestamp > 0) {
val day = timestamp / DateUtils.DAY
val hours = (timestamp - DateUtils.DAY * day) / DateUtils.HOURS
val minute = (timestamp - DateUtils.DAY * day - DateUtils.HOURS * hours) / DateUtils.MINUTE
val second = (timestamp - DateUtils.DAY * day - DateUtils.HOURS * hours - DateUtils.MINUTE * minute) / DateUtils.SECOND
val millisecond = (timestamp - DateUtils.DAY * day - DateUtils.HOURS * hours - DateUtils.MINUTE * minute - DateUtils.SECOND * second) / DateUtils.MILLISECOND
val tempDay=if (day in 0..9) "0$day" else day.toString()
val tempHours=if (hours in 0..9) "0$hours" else hours.toString()
val tempMinute=if (minute in 0..9) "0$minute" else minute.toString()
val tempSecond=if (second in 0..9) "0$second" else second.toString()
val tempMillisecond=if (millisecond in 0..9) "0$millisecond" else millisecond.toString()
return when {
day > 0 -> String.format("%s %s:%s:%s,%s", tempDay, tempHours, tempMinute, tempSecond, tempMillisecond)
hours > 0 -> String.format("%s:%s:%s,%s", tempHours, tempMinute, tempSecond, tempMillisecond)
minute > 0 -> String.format("%s:%s,%s", tempMinute, tempSecond, tempMillisecond)
second > 0 -> String.format("%s:%s,%s", tempMinute, tempSecond, tempMillisecond)
minute > 0 -> String.format("%s:%s,%s", tempMinute, tempSecond, tempMillisecond)
else -> "00:00,00"
} else "00:00,00"
工具类源码:
查看源码
一、比较时间的大小-三种方式:1、获取时间戳比较timestamp1 > timestamp22、转换为Date比较val date=Date()val date2=时间2date.after(date2)3、使用工具类(推荐)val date = Date()val date2 = Date()/*date>date2*/DateUtils.a...
public static int getTimeCompareSize(String startTime, String endTime){
int i=0;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");//年-月-日 时-分
try {
Date date1 = dateFormat.parse(startTime);//开始
时间
Date date2 = dateFormat.parse(endTime);//结束
时间
// 1 结束
时间
小于开始
时间
2 开始
时间
与结束
时间
相同 3 结束
时间
大于开始
时间
if (date2.getTime()<date1.getTime()){
i= 1;
}else if (date2.getTime()==date1.getTime()){
i= 2;
}else if (date2.getTime()>date1.getTime()){
//正常情况下的逻辑操作.
i= 3;
} catch (ParseException e) {
e.printStackTrace();
return i;
最近需要增加让APP在特定的
时间
(比如2017.12.20)之后不能正常使用,所以我们需要获取到系统的
时间
或者是从服务器上获取
时间
进行
比较
大小
,从而来实现此功能。
1.用相同的字符串类型进行
比较
,我们自己一开始肯定是定义String类型比如 String n = "
2017.12.20",而我们获取到的系统
时间
字符串,它和我们正常定义的字符串类型是不一样的不能直接进行
比较
,所以在这里我是将字符串类型转换成了
时间
字符串的类型后,进行
时间
的前后
比较
;(PS相关的
时间
与字符串
比较
大小
,以及他们之间的转换我在此
//计算
时间差
int daynumber = dateDiff(startDate, endDate, "yyyy-MM-dd");
//计算
时间
大小
int retuencode=compare_date(data1,data2);
//
两个
日期相差几天
public long dateDiff(String startTime, S...
String beginTime=new String("2017-06-09 10:22:22");
String endTime=new String("2017-05-08 11:22:22");
1 直接用Date自带方法before()和after()
比较
SimpleDateForma
// 获取服务器返回的
时间
戳 转换成"yyyy-MM-dd HH:mm:ss"
// 计算结束
时间
- 开始
时间
的
时间差
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");//格式
try {
Date date=format.parse(String str);//第一个日期(字符串)
Date date1=format.parse(String str1);//第二个日期(字符串)
DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(System.currentTimeMillis());//获取当前
时间
String currentDate = simpleDateFormat.format(date);
Log.d("test",currentDate);
Log.d("test"," Result:"+timeCompare(
public class TimeDifference {
public static void main(String[] args) {
String startTime = "2022-01-01 00:00:00";
String endTime = "2022-01-02 12:30:30";
long between = DateUtil.between(DateUtil.parse(startTime), DateUtil.parse(endTime), DateUnit.SECOND);
String time = DateUtil.formatBetween(between * 1000, BetweenFormater.Level.SECOND);
System.out.println("
两个
时间
的
差值
为:" + time);
运行结果为:
两个
时间
的
差值
为:1天12小时30分30秒
其中,startTime和endTime表示
两个
时间
的字符串格式,通过DateUtil.parse方法将其转换为Date类型,