Skip to content

Commit 2578d84

Browse files
committed
see 12/04 log
1 parent 1fd55e5 commit 2578d84

File tree

12 files changed

+733
-260
lines changed

12 files changed

+733
-260
lines changed

README-CN.md

+25-18
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,10 @@ RegexConst : 正则相关常量
8686
```
8787
bytes2HexString, hexString2Bytes : byteArr与hexString互转
8888
chars2Bytes, bytes2Chars : charArr与byteArr互转
89-
byte2Size, size2Byte : 字节数与unit为单位的size互转
90-
byte2FitSize : 字节数转合适大小
89+
memorySize2Byte, byte2MemorySize : 以unit为单位的内存大小与字节数互转
90+
byte2FitMemorySize : 字节数转合适内存大小
91+
timeSpan2Millis, millis2TimeSpan : 以unit为单位的时间长度与毫秒时间戳互转
92+
millis2FitTimeSpan : 毫秒时间戳转合适时间长度
9193
bytes2Bits, bits2Bytes : bytes与bits互转
9294
input2OutputStream, output2InputStream : inputStream与outputStream互转
9395
inputStream2Bytes, bytes2InputStream : inputStream与byteArr互转
@@ -464,22 +466,27 @@ scheduleWithFixedDelay : 延迟并以固定休息时间循环执行命令
464466

465467
> - **时间相关→[TimeUtils.java][time.java][Test][time.test]**
466468
```
467-
milliseconds2String : 将时间戳转为时间字符串
468-
string2Milliseconds : 将时间字符串转为时间戳
469-
string2Date : 将时间字符串转为Date类型
470-
date2String : 将Date类型转为时间字符串
471-
date2Milliseconds : 将Date类型转为时间戳
472-
milliseconds2Date : 将时间戳转为Date类型
473-
milliseconds2Unit : 毫秒时间戳单位转换(单位:unit)
474-
getIntervalTime : 获取两个时间差(单位:unit)
475-
getCurTimeMills : 获取当前时间戳
476-
getCurTimeString : 获取当前时间字符串
477-
getCurTimeDate : 获取当前Date
478-
getIntervalByNow : 获取与当前时间的差(单位:unit)
479-
isLeapYear : 判断闰年
480-
getWeek, getWeekIndex : 获取星期
481-
getWeekOfMonth : 获取月份中的第几周
482-
getWeekOfYear : 获取年份中的第几周
469+
millis2String : 将时间戳转为时间字符串
470+
string2Millis : 将时间字符串转为时间戳
471+
string2Date : 将时间字符串转为Date类型
472+
date2String : 将Date类型转为时间字符串
473+
date2Millis : 将Date类型转为时间戳
474+
millis2Date : 将时间戳转为Date类型
475+
getTimeSpan : 获取两个时间差(单位:unit)
476+
getFitTimeSpan : 获取合适型两个时间差
477+
getNowTimeMills : 获取当前毫秒时间戳
478+
getNowTimeString : 获取当前时间字符串
479+
getNowTimeDate : 获取当前Date
480+
getTimeSpanByNow : 获取与当前时间的差(单位:unit)
481+
getFitTimeSpanByNow : 获取合适型与当前时间的差
482+
getFriendlyTimeSpanByNow : 获取友好型与当前时间的差
483+
isSameDay : 判断是否同一天
484+
isLeapYear : 判断是否闰年
485+
getWeek, getWeekIndex : 获取星期
486+
getWeekOfMonth : 获取月份中的第几周
487+
getWeekOfYear : 获取年份中的第几周
488+
getChineseZodiac : 获取生肖
489+
getZodiac : 获取星座
483490
```
484491

485492
> - **吐司相关→[ToastUtils.java][toast.java][Demo][toast.demo]**

README.md

+20-13
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
## Android developers should collect the following utils
2-
**[中文版README][readme-cn.md]**
2+
**[README of Chinese][readme-cn.md]**
33
***
44
Directory is shown below:
55
> - **About Activity→[ActivityUtils.java][activity.java][Demo][activity.demo]**
@@ -86,8 +86,10 @@ RegexConst
8686
```
8787
bytes2HexString, hexString2Bytes
8888
chars2Bytes, bytes2Chars
89-
byte2Size, size2Byte
90-
byte2FitSize
89+
memorySize2Byte, byte2MemorySize
90+
byte2FitMemorySize
91+
timeSpan2Millis, millis2TimeSpan
92+
millis2FitTimeSpan
9193
bytes2Bits, bits2Bytes
9294
input2OutputStream, output2InputStream
9395
inputStream2Bytes, bytes2InputStream
@@ -464,22 +466,27 @@ scheduleWithFixedDelay
464466

465467
> - **About Time→[TimeUtils.java][time.java][Test][time.test]**
466468
```
467-
milliseconds2String
468-
string2Milliseconds
469+
millis2String
470+
string2Millis
469471
string2Date
470472
date2String
471-
date2Milliseconds
472-
milliseconds2Date
473-
milliseconds2Unit
474-
getIntervalTime
475-
getCurTimeMills
476-
getCurTimeString
477-
getCurTimeDate
478-
getIntervalByNow
473+
date2Millis
474+
millis2Date
475+
getTimeSpan
476+
getFitTimeSpan
477+
getNowTimeMills
478+
getNowTimeString
479+
getNowTimeDate
480+
getTimeSpanByNow
481+
getFitTimeSpanByNow
482+
getFriendlyTimeSpanByNow
483+
isSameDay
479484
isLeapYear
480485
getWeek, getWeekIndex
481486
getWeekOfMonth
482487
getWeekOfYear
488+
getChineseZodiac
489+
getZodiac
483490
```
484491

485492
> - **About Toast→[ToastUtils.java][toast.java][Demo][toast.demo]**

update_log.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
#### 16/11/30
1+
#### 16/12/03 完善时间工具类
2+
#### 16/12/02 新增获取合适型时间差
3+
#### 16/12/01 新增获取生肖和星座
4+
#### 16/11/30 新增获取友好型时间差
25
#### 16/11/23 LocationUtils测试完毕,发布1.3.4
36
#### 16/11/22 查看LocationActivity内存泄漏
47
#### 16/11/21 优化README

utilcode/src/main/java/com/blankj/utilcode/utils/CleanUtils.java

-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
package com.blankj.utilcode.utils;
22

3-
import android.app.ActivityManager;
43
import android.content.Context;
54

65
import java.io.File;
7-
import java.util.Arrays;
8-
import java.util.HashSet;
9-
import java.util.List;
10-
import java.util.Set;
116

127
/**
138
* <pre>

utilcode/src/main/java/com/blankj/utilcode/utils/ConstUtils.java

+3-11
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,18 @@ private ConstUtils() {
1515
}
1616

1717
/******************** 存储相关常量 ********************/
18-
/**
19-
* Byte与Byte的倍数
20-
*/
21-
public static final int BYTE = 1;
2218
/**
2319
* KB与Byte的倍数
2420
*/
25-
public static final int KB = 1024;
21+
public static final int KB = 1024;
2622
/**
2723
* MB与Byte的倍数
2824
*/
29-
public static final int MB = 1048576;
25+
public static final int MB = 1048576;
3026
/**
3127
* GB与Byte的倍数
3228
*/
33-
public static final int GB = 1073741824;
29+
public static final int GB = 1073741824;
3430

3531
public enum MemoryUnit {
3632
BYTE,
@@ -40,10 +36,6 @@ public enum MemoryUnit {
4036
}
4137

4238
/******************** 时间相关常量 ********************/
43-
/**
44-
* 毫秒与毫秒的倍数
45-
*/
46-
public static final int MSEC = 1;
4739
/**
4840
* 秒与毫秒的倍数
4941
*/

utilcode/src/main/java/com/blankj/utilcode/utils/ConvertUtils.java

+118-50
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,35 @@ public static char[] bytes2Chars(byte[] bytes) {
130130
}
131131

132132
/**
133-
* 字节数转以unit为单位的size
133+
* 以unit为单位的内存大小转字节数
134+
*
135+
* @param memorySize 大小
136+
* @param unit 单位类型
137+
* <ul>
138+
* <li>{@link ConstUtils.MemoryUnit#BYTE}: 字节</li>
139+
* <li>{@link ConstUtils.MemoryUnit#KB} : 千字节</li>
140+
* <li>{@link ConstUtils.MemoryUnit#MB} : 兆</li>
141+
* <li>{@link ConstUtils.MemoryUnit#GB} : GB</li>
142+
* </ul>
143+
* @return 字节数
144+
*/
145+
public static long memorySize2Byte(long memorySize, ConstUtils.MemoryUnit unit) {
146+
if (memorySize < 0) return -1;
147+
switch (unit) {
148+
default:
149+
case BYTE:
150+
return memorySize;
151+
case KB:
152+
return memorySize * ConstUtils.KB;
153+
case MB:
154+
return memorySize * ConstUtils.MB;
155+
case GB:
156+
return memorySize * ConstUtils.GB;
157+
}
158+
}
159+
160+
/**
161+
* 字节数转以unit为单位的内存大小
134162
*
135163
* @param byteNum 字节数
136164
* @param unit 单位类型
@@ -142,12 +170,12 @@ public static char[] bytes2Chars(byte[] bytes) {
142170
* </ul>
143171
* @return 以unit为单位的size
144172
*/
145-
public static double byte2Size(long byteNum, ConstUtils.MemoryUnit unit) {
173+
public static double byte2MemorySize(long byteNum, ConstUtils.MemoryUnit unit) {
146174
if (byteNum < 0) return -1;
147175
switch (unit) {
148176
default:
149177
case BYTE:
150-
return (double) byteNum / ConstUtils.BYTE;
178+
return (double) byteNum;
151179
case KB:
152180
return (double) byteNum / ConstUtils.KB;
153181
case MB:
@@ -157,34 +185,6 @@ public static double byte2Size(long byteNum, ConstUtils.MemoryUnit unit) {
157185
}
158186
}
159187

160-
/**
161-
* 以unit为单位的size转字节数
162-
*
163-
* @param size 大小
164-
* @param unit 单位类型
165-
* <ul>
166-
* <li>{@link ConstUtils.MemoryUnit#BYTE}: 字节</li>
167-
* <li>{@link ConstUtils.MemoryUnit#KB} : 千字节</li>
168-
* <li>{@link ConstUtils.MemoryUnit#MB} : 兆</li>
169-
* <li>{@link ConstUtils.MemoryUnit#GB} : GB</li>
170-
* </ul>
171-
* @return 字节数
172-
*/
173-
public static long size2Byte(long size, ConstUtils.MemoryUnit unit) {
174-
if (size < 0) return -1;
175-
switch (unit) {
176-
default:
177-
case BYTE:
178-
return size;
179-
case KB:
180-
return size * ConstUtils.KB;
181-
case MB:
182-
return size * ConstUtils.MB;
183-
case GB:
184-
return size * ConstUtils.GB;
185-
}
186-
}
187-
188188
/**
189189
* 字节数转合适内存大小
190190
* <p>保留3位小数</p>
@@ -193,41 +193,109 @@ public static long size2Byte(long size, ConstUtils.MemoryUnit unit) {
193193
* @return 合适内存大小
194194
*/
195195
@SuppressLint("DefaultLocale")
196-
public static String byte2FitSize(long byteNum) {
196+
public static String byte2FitMemorySize(long byteNum) {
197197
if (byteNum < 0) {
198198
return "shouldn't be less than zero!";
199199
} else if (byteNum < ConstUtils.KB) {
200-
return String.format("%.3fB", (double) byteNum);
200+
return String.format("%.3fB", byteNum + 0.0005);
201201
} else if (byteNum < ConstUtils.MB) {
202-
return String.format("%.3fKB", (double) byteNum / ConstUtils.KB);
202+
return String.format("%.3fKB", byteNum / ConstUtils.KB + 0.0005);
203203
} else if (byteNum < ConstUtils.GB) {
204-
return String.format("%.3fMB", (double) byteNum / ConstUtils.MB);
204+
return String.format("%.3fMB", byteNum / ConstUtils.MB + 0.0005);
205205
} else {
206-
return String.format("%.3fGB", (double) byteNum / ConstUtils.GB);
206+
return String.format("%.3fGB", byteNum / ConstUtils.GB + 0.0005);
207207
}
208208
}
209209

210210
/**
211-
* 毫秒时间戳转合适时间长度
211+
* 以unit为单位的时间长度转毫秒时间戳
212+
*
213+
* @param timeSpan 毫秒时间戳
214+
* @param unit 单位类型
215+
* <ul>
216+
* <li>{@link ConstUtils.TimeUnit#MSEC}: 毫秒</li>
217+
* <li>{@link ConstUtils.TimeUnit#SEC }: 秒</li>
218+
* <li>{@link ConstUtils.TimeUnit#MIN }: 分</li>
219+
* <li>{@link ConstUtils.TimeUnit#HOUR}: 小时</li>
220+
* <li>{@link ConstUtils.TimeUnit#DAY }: 天</li>
221+
* </ul>
222+
* @return 毫秒时间戳
223+
*/
224+
public static long timeSpan2Millis(long timeSpan, ConstUtils.TimeUnit unit) {
225+
switch (unit) {
226+
default:
227+
case MSEC:
228+
return timeSpan;
229+
case SEC:
230+
return timeSpan * ConstUtils.SEC;
231+
case MIN:
232+
return timeSpan * ConstUtils.MIN;
233+
case HOUR:
234+
return timeSpan * ConstUtils.HOUR;
235+
case DAY:
236+
return timeSpan * ConstUtils.DAY;
237+
}
238+
}
239+
240+
/**
241+
* 毫秒时间戳转以unit为单位的时间长度
212242
*
213243
* @param millis 毫秒时间戳
244+
* @param unit 单位类型
245+
* <ul>
246+
* <li>{@link ConstUtils.TimeUnit#MSEC}: 毫秒</li>
247+
* <li>{@link ConstUtils.TimeUnit#SEC }: 秒</li>
248+
* <li>{@link ConstUtils.TimeUnit#MIN }: 分</li>
249+
* <li>{@link ConstUtils.TimeUnit#HOUR}: 小时</li>
250+
* <li>{@link ConstUtils.TimeUnit#DAY }: 天</li>
251+
* </ul>
252+
* @return 以unit为单位的时间长度
253+
*/
254+
public static long millis2TimeSpan(long millis, ConstUtils.TimeUnit unit) {
255+
switch (unit) {
256+
default:
257+
case MSEC:
258+
return millis;
259+
case SEC:
260+
return millis / ConstUtils.SEC;
261+
case MIN:
262+
return millis / ConstUtils.MIN;
263+
case HOUR:
264+
return millis / ConstUtils.HOUR;
265+
case DAY:
266+
return millis / ConstUtils.DAY;
267+
}
268+
}
269+
270+
/**
271+
* 毫秒时间戳转合适时间长度
272+
*
273+
* @param millis 毫秒时间戳
274+
* <p>小于等于0,返回null</p>
275+
* @param precision 精度
276+
* <p>precision = 0,返回null</p>
277+
* <p>precision = 1,返回天</p>
278+
* <p>precision = 2,返回天和小时</p>
279+
* <p>precision = 3,返回天、小时和分钟</p>
280+
* <p>precision = 4,返回天、小时、分钟和秒</p>
281+
* <p>precision >= 5,返回天、小时、分钟、秒和毫秒</p>
214282
* @return 合适时间长度
215283
*/
216284
@SuppressLint("DefaultLocale")
217-
public static String millis2FitTimeSpan(long millis) {
218-
if (millis < 0) {
219-
return "shouldn't be less than zero!";
220-
} else if (millis < ConstUtils.SEC) {
221-
return String.format("%d毫秒", millis);
222-
} else if (millis < ConstUtils.MIN) {
223-
return String.format("%d秒", millis / ConstUtils.SEC);
224-
} else if (millis < ConstUtils.HOUR) {
225-
return String.format("%d分", millis / ConstUtils.MIN);
226-
} else if (millis < ConstUtils.DAY) {
227-
return String.format("%d小时", millis / ConstUtils.HOUR);
228-
} else {
229-
return String.format("%d天", millis / ConstUtils.DAY);
285+
public static String millis2FitTimeSpan(long millis, int precision) {
286+
if (millis <= 0 || precision <= 0) return null;
287+
StringBuilder sb = new StringBuilder();
288+
String[] units = {"天", "小时", "分钟", "秒", "毫秒"};
289+
int[] unitLen = {86400000, 3600000, 60000, 1000, 1};
290+
precision = Math.min(precision, 5);
291+
for (int i = 0; i < precision; i++) {
292+
if (millis >= unitLen[i]) {
293+
long mode = millis / unitLen[i];
294+
millis -= mode * unitLen[i];
295+
sb.append(mode).append(units[i]);
296+
}
230297
}
298+
return sb.toString();
231299
}
232300

233301
/**

0 commit comments

Comments
 (0)