Java 学习 UUID 与 时间格式化、时间操作

目录

 

UUID :

Time:

获取当前时间

格式化时间

使用Calendar 历法类设置时间

使用Calendar得到时间

 


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();

格式化时间

格式化字母表

SymbolMeaningPresentationExample
Gera designator 时代TextAD
yyear   Number2009
Mmonth in year  Text & NumberJuly & 07
dday in month  Number10
hhour in am/pm (1-12) 12小时制的时Number12
Hhour in day (0-23)  24小时制的时Number0
mminute in hour   分钟Number30
ssecond in minute Number55
Smillisecond 毫秒Number978
Eday in week 星期TextTuesday
Dday in year  一年中的第几天Number189
Fday of week in month  一个月中的第几周的星期几Number2 (2nd Wed in July)
wweek in year  一年中的第几周Number27
Wweek in month 一月中的第几周Number2
aam/pm marker  上午/下午TextPM
khour in day (1-24)   一天中的第几个小时Number24
Khour in am/pm (0-11) Number0
ztime zone 时区TextPacific Standard Time
'escape for textDelimiter(none)
'single quoteLiteral'

 格式化出全部的时间:

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

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java-uuid-generator是一个用于生成UUID(通用唯一标识符)的Java库。UUID是一种128位的标识符,它可以在计算机系统中唯一地标识一个实体。以下是Java-uuid-generator的用法: 1. 导入Java-uuid-generator库 在Java项目中,需要在pom.xml文件中加入以下依赖: ```xml <dependency> <groupId>com.fasterxml.uuid</groupId> <artifactId>java-uuid-generator</artifactId> <version>3.1.6</version> </dependency> ``` 2. 生成UUID 使用Java-uuid-generator库生成UUID非常简单,只需要调用UuidGenerator类的generate方法即可: ```java import com.fasterxml.uuid.Generators; import com.fasterxml.uuid.impl.TimeBasedGenerator; import java.util.UUID; public class UUIDGenerator { public static void main(String[] args) { // 生成随机UUID UUID uuid = Generators.randomBasedGenerator().generate(); System.out.println(uuid); // 生成时间UUID TimeBasedGenerator timeBasedGenerator = Generators.timeBasedGenerator(); UUID timestampUuid = timeBasedGenerator.generate(); System.out.println(timestampUuid); } } ``` 上述代码中,使用randomBasedGenerator方法生成随机UUID,使用timeBasedGenerator方法生成基于时间戳的UUID。 3. UUID格式 Java-uuid-generator库还提供了格式UUID的方法。可以将UUID转换为不同的字符串格式,例如: ```java import com.fasterxml.uuid.Generators; import java.util.UUID; public class UUIDFormatter { public static void main(String[] args) { UUID uuid = Generators.randomBasedGenerator().generate(); // 转换为十六进制字符串 String hexString = uuid.toString().replaceAll("-", ""); System.out.println(hexString); // 转换为带分隔符的UUID字符串 String formattedString = uuid.toString(); System.out.println(formattedString); } } ``` 上述代码中,使用toString方法获取UUID的字符串表示形式,并使用replaceAll方法去掉其中的“-”字符。另外,UUID还可以使用带分隔符的字符串表示形式,例如“550e8400-e29b-41d4-a716-446655440000”,使用toString方法即可获取该格式的字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值