UUID :
UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过*控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。在这样的情况下,就不需考虑数据库创建时的名称重复问题。目前最广泛应用的UUID,是微软公司的全局唯一标识符(GUID),而其他重要的应用,则有Linux ext2/ext3文件系统、LUKS加密分区、GNOME、KDE、Mac OS X等等。
String uuid1 = UUID.randomUUID().toString();//生成UUID Log.e(TAG, "uuid1 默认的uuid: "+uuid1); String uuid2 = UUID.randomUUID().toString().replace("-","");//格式化UUID将“-”去掉 Log.e(TAG, "uuid2 将“-”去掉: "+uuid2); String uuid3 = UUID.randomUUID().toString().replace("-",".");//格式UUID将“-”格式成“.” Log.e(TAG, "uuid3 将“-”格式成“.”: "+uuid3); String uuid4 = UUID.randomUUID().toString().concat(".apk");//格式UUID,在UUID的结尾添加.apk Log.e(TAG, "uuid4 结尾添加.apk: "+uuid4); String uuid5 = UUID.randomUUID().toString().replaceAll("\\d","");//替换所有,参数1为要替换的字符正则表达式,参数2为替换字符; Log.e(TAG, "uuid5 去掉所有数字: "+uuid5); UUID newuuid = UUID.fromString(uuid1);//将String类型 转成 UUID UUID u1 = UUID.randomUUID(); UUID u2 = UUID.randomUUID(); int values = u1.compareTo(u2); // -1=小于 0=等于 1=大于 Log.e(TAG, "u1 对比 u2: "+values);//注意UUID对比 不会根据生成时间就比较大,它只是简单的比较字符大小
结果:
E/DemoActivity: uuid1 默认的uuid: 02f33031-dbb6-465f-9645-11388b3f08c6 E/DemoActivity: uuid2 将“-”去掉: f7b60f9a76954939afd773c158527b99 E/DemoActivity: uuid3 将“-”格式成“.”: 2c5c2843.a122.465b.bb23.963221fb32ed E/DemoActivity: uuid4 结尾添加.apk: f466f910-0ed9-4a26-8532-bee14272136f.apk E/DemoActivity: uuid5 去掉所有数字: fdb-ca-d-b-cfaee E/DemoActivity: u1 对比 u2: -1
Time:
获取当前时间
方式一:
Date date = new Date(); Log.e(TAG, "当前时间="+date);
结果:
E/TimeActivity: 当前时间=Wed Sep 12 07:03:25 GMT+00:00 2018
方式二:
long date = System.currentTimeMillis(); //获得系统时间,得到是从1970年到现在的毫秒级long值 Log.e(TAG, "毫秒级time值=:"+date);
结果:
E/TimeActivity: 毫秒级time值=:1536736055737
方法三:
Calendar calendar = Calendar.getInstance();
calendar.getTimeInMillis();
获取设备开机至此时的相对时间:
long time = SystemClock.elapsedRealtime();
格式化时间
格式化字母表
Symbol | Meaning | Presentation | Example |
---|---|---|---|
G | era designator 时代 | Text | AD |
y | year 年 | Number | 2009 |
M | month in year 月 | Text & Number | July & 07 |
d | day in month 日 | Number | 10 |
h | hour in am/pm (1-12) 12小时制的时 | Number | 12 |
H | hour in day (0-23) 24小时制的时 | Number | 0 |
m | minute in hour 分钟 | Number | 30 |
s | second in minute 秒 | Number | 55 |
S | millisecond 毫秒 | Number | 978 |
E | day in week 星期 | Text | Tuesday |
D | day in year 一年中的第几天 | Number | 189 |
F | day of week in month 一个月中的第几周的星期几 | Number | 2 (2nd Wed in July) |
w | week in year 一年中的第几周 | Number | 27 |
W | week in month 一月中的第几周 | Number | 2 |
a | am/pm marker 上午/下午 | Text | PM |
k | hour in day (1-24) 一天中的第几个小时 | Number | 24 |
K | hour in am/pm (0-11) | Number | 0 |
z | time zone 时区 | Text | Pacific Standard Time |
' | escape for text | Delimiter | (none) |
' | single quote | Literal | ' |
格式化出全部的时间:
long time = System.currentTimeMillis(); //格式化 日-月(3个M等于文本形式的月份)-年 小时:分钟:秒:毫秒 SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss:SSS"); String timeText = formatter.format(time); Log.e(TAG, "格式化后time值=:"+timeText);
结果:
E/TimeActivity: 格式化后time值=:12-Sep-2018 07:22:38:596
只格式化时-分-秒-毫秒:
SimpleDateFormat formatter = new SimpleDateFormat("HH-mm-ss-SSS");//分隔符是可以自己设定的 Log.e(TAG, "格式化后time值=:"+formatter.format(System.currentTimeMillis()));
结果:
E/TimeActivity: 格式化后time值=:07-29-18-317
格式化一个月中第几周:
SimpleDateFormat formatter = new SimpleDateFormat("M-W");//月份-月份中的第几周 //如果是"MM-WW" 则可以格式化出 09-03 Log.e(TAG, "格式化后time值=:"+formatter.format(System.currentTimeMillis()));
结果:
E/TimeActivity: 格式化后time值=:9-3
使用Calendar 历法类设置时间
例一:
mFormat = new SimpleDateFormat("yyyy-MM-dd:HH-mm-ss"); Calendar calendar = Calendar.getInstance();//得到单例 calendar.set(Calendar.YEAR,2018);//年 calendar.set(Calendar.MONTH,8);//月 注意月份是从0开始计算的,所以这里的8,在格式化后等于9 calendar.set(Calendar.DAY_OF_MONTH,12);//日 calendar.set(Calendar.HOUR_OF_DAY,15);// HOUR_OF_DAY 24小时制的时 calendar.set(Calendar.MINUTE,52);//分 calendar.set(Calendar.SECOND,20);//秒 Log.e(TAG, "未格式化毫秒级time="+calendar.getTimeInMillis()); Log.e(TAG, "手动格式化time="+mFormat.format(calendar.getTimeInMillis())); Log.e(TAG, "系统自带格式化time="+calendar.getTime());
效果:
E/TimeActivity: 未格式化毫秒级time=1536767540133 E/TimeActivity: 手动格式化time=2018-09-12:15-52-20 E/TimeActivity: 系统自带格式化time=Wed Sep 12 15:52:20 GMT+00:00 2018
例二:
calendar.set(2017,9,13,14,24,30);
Log.e(TAG, "另一种方式输入方式time="+mFormat.format(calendar.getTimeInMillis()));
效果 :
E/TimeActivity: 另一种方式输入方式time=2017-10-13:14-24-30
例三:
calendar.set(Calendar.AM_PM,0);// 0=上午 1=下午 calendar.set(Calendar.HOUR,6);//12小时值 Log.e(TAG, "上午time="+mFormat.format(calendar.getTimeInMillis())); calendar.set(Calendar.AM_PM,1); calendar.set(Calendar.HOUR,7); Log.e(TAG, "下午time="+mFormat.format(calendar.getTimeInMillis()));
效果:
E/TimeActivity: 上午time=2017-10-13:06-24-30
E/TimeActivity: 下午time=2017-10-13:19-24-30
使用Calendar得到时间
Calendar cal = Calendar.getInstance(); //当前年 int year = cal.get(Calendar.YEAR); Log.e(TAG, "当前年:"+year); //当前月 int month = (cal.get(Calendar.MONTH))+1; Log.e(TAG, "当前月:"+month); //当前月的第几天:即当前日 int day_of_month = cal.get(Calendar.DAY_OF_MONTH); Log.e(TAG, "当前月:"+day_of_month); //当前时:HOUR_OF_DAY-24小时制;HOUR-12小时制 int hour = cal.get(Calendar.HOUR_OF_DAY); Log.e(TAG, "当前时:"+hour); //当前分 int minute = cal.get(Calendar.MINUTE); Log.e(TAG, "当前分:"+minute); //当前秒 int second = cal.get(Calendar.SECOND); Log.e(TAG, "当前秒:"+second); //0-上午;1-下午 int ampm = cal.get(Calendar.AM_PM); Log.e(TAG, "上午/下午:"+ampm); //当前年的第几周 int week_of_year = cal.get(Calendar.WEEK_OF_YEAR); Log.e(TAG, "当前年的第几周:"+week_of_year); //当前月的第几周 int week_of_month = cal.get(Calendar.WEEK_OF_MONTH); Log.e(TAG, "当前月的第几周:"+week_of_month); //当前年的第几天 int day_of_year = cal.get(Calendar.DAY_OF_YEAR); Log.e(TAG, "当前年的第几天:"+day_of_year);
结果:
E/TimeActivity: 当前年:2018 E/TimeActivity: 当前月:9 E/TimeActivity: 当前月:12 E/TimeActivity: 当前时:7 E/TimeActivity: 当前分:48 E/TimeActivity: 当前秒:34 E/TimeActivity: 上午/下午:0 E/TimeActivity: 当前年的第几周:37 E/TimeActivity: 当前月的第几周:3 E/TimeActivity: 当前年的第几天:255