Skip to content

Commit 763fc81

Browse files
committed
完善获取当天零点时刻时间戳的算法,先前算法采用整除的形式会导致某些情况下结果差一整天的毫秒数,例如当天8点之前的时间会算出少一天的时间戳
1 parent a1e38fd commit 763fc81

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

utilcode/src/main/java/com/blankj/utilcode/util/TimeUtils.java

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,20 @@ public static Date getNowDate() {
498498
return new Date();
499499
}
500500

501+
/**
502+
* 获取当天零点的时间戳
503+
*
504+
* @return 毫秒时间戳
505+
*/
506+
public static long getTimeTodayZero() {
507+
Calendar cal = Calendar.getInstance();
508+
cal.set(Calendar.HOUR_OF_DAY, 0);
509+
cal.set(Calendar.SECOND, 0);
510+
cal.set(Calendar.MINUTE, 0);
511+
cal.set(Calendar.MILLISECOND, 0);
512+
return cal.getTimeInMillis();
513+
}
514+
501515
/**
502516
* 获取与当前时间的差(单位:unit)
503517
* <p>time格式为yyyy-MM-dd HH:mm:ss</p>
@@ -740,7 +754,7 @@ public static String getFriendlyTimeSpanByNow(final long millis) {
740754
return String.format(Locale.getDefault(), "%d分钟前", span / TimeConstants.MIN);
741755
}
742756
// 获取当天00:00
743-
long wee = (now / TimeConstants.DAY) * TimeConstants.DAY - 8 * TimeConstants.HOUR;
757+
long wee = getTimeTodayZero();
744758
if (millis >= wee) {
745759
return String.format("今天%tR", millis);
746760
} else if (millis >= wee - TimeConstants.DAY) {
@@ -1146,7 +1160,7 @@ public static boolean isToday(final Date date) {
11461160
* @return {@code true}: 是<br>{@code false}: 否
11471161
*/
11481162
public static boolean isToday(final long millis) {
1149-
long wee = (System.currentTimeMillis() / TimeConstants.DAY) * TimeConstants.DAY - 8 * TimeConstants.HOUR;
1163+
long wee = getTimeTodayZero();
11501164
return millis >= wee && millis < wee + TimeConstants.DAY;
11511165
}
11521166

@@ -1524,8 +1538,8 @@ public static String getChineseZodiac(final int year) {
15241538
return CHINESE_ZODIAC[year % 12];
15251539
}
15261540

1527-
private static final String[] ZODIAC = {"水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座", "魔羯座"};
1528-
private static final int[] ZODIAC_FLAGS = {20, 19, 21, 21, 21, 22, 23, 23, 23, 24, 23, 22};
1541+
private static final String[] ZODIAC = {"水瓶座", "双鱼座", "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座", "天秤座", "天蝎座", "射手座", "魔羯座"};
1542+
private static final int[] ZODIAC_FLAGS = {20, 19, 21, 21, 21, 22, 23, 23, 23, 24, 23, 22};
15291543

15301544
/**
15311545
* 获取星座

0 commit comments

Comments
 (0)