• 如何生成时间戳和如何生成UUID最新详解(教你怎么用)


    先看代码,复制粘贴,demo跑起来

    1. package com.example.test4;
    2. import com.sun.deploy.util.StringUtils;
    3. import java.math.BigInteger;
    4. import java.text.SimpleDateFormat;
    5. import java.time.LocalDateTime;
    6. import java.time.ZoneOffset;
    7. import java.util.ArrayList;
    8. import java.util.Date;
    9. import java.util.UUID;
    10. public class demo5 {
    11. //时间戳
    12. // private final static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
    13. // private String startDateTime = null;
    14. public static void main(String[] args) {
    15. String sId = "sid"+UUID.randomUUID().toString().replace("-", "").toLowerCase().substring(3);
    16. String sCode="scode"+sId.substring(5);
    17. String sId4K="4ksid"+sId.substring(5);
    18. String sCode4K="4kscode"+sId.substring(7);
    19. //UUID
    20. String mappingID=UUID.randomUUID().toString().replace("-", "").toLowerCase();
    21. System.out.println("mappingID = " + mappingID);
    22. //时间戳
    23. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss");
    24. String format = sdf.format(new Date());
    25. System.out.println("format = " + format);
    26. //把uuid的时间戳转成可以识别的时间戳 固定18位,需要多位可以再拼接
    27. LocalDateTime localDateTime = LocalDateTime.ofEpochSecond(138140162874696958L - 0x01b21dd213814000L, 0, ZoneOffset.ofHours(8));
    28. String s1 = localDateTime.now().toString().replace("-", "").replace(":", "").replace(".", "").toLowerCase();
    29. System.out.println("s1 = " + s1);
    30. //获取固定32位
    31. String s2=s1+s1.substring(4);
    32. System.out.println("s2 = " + s2);
    33. }
    34. }

    Java中获取时间戳 三种方式对比

    1. 最近项目开发过程中发现了项目中获取时间戳的业务。
    2. 而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式。

    1 System.currentTimeMillis()

    1. System类中的currentTimeMillis()方法是三种方式中效率最好的,运行时间最短。
    2. 开发中如果设计到效率问题,推荐使用此种方式获取。

    2.new Date().getTime()

    1. 除了System类,使用量很大的应该就是Date类了,包括我也一样开发中如果
    2. 涉及到日期的首先会想到Date,但date类中获取时间戳并不是最有效率的,翻看他的源码:
    3. 无参构造如下👇
    4. public Date() {
    5. this(System.currentTimeMillis());
    6. }
    7. 从源码可以看出,new Date()其实就是调用了System.currentTimeMillis(),再传入自己的有参构造函数。
    8. 不难看出,如果只是仅仅获取时间戳,即使是匿名的new Date()对象也会有些许的性能消耗,
    9. 从提升性能的角度来看,只是仅仅获取时间戳,不考虑时区的影响(时区为什么会有影响看下一段),
    10. 直接调用System.currentTimeMillis()会更好一些。

    3.Calendar.getInstance().getTimeInMillis()

    1. 这种方式其实是速度最慢,看其源码就会发现,Canlendar是区分时区的,因为要处理时区问题会耗费很多的时间。
    2. 附测试如下:
    1. import java.util.Calendar;
    2. import java.util.Date;
    3. public class TimeTest {
    4. private static long _TEN_THOUSAND=10000;
    5. public static void main(String[] args) {
    6. long times=1000*_TEN_THOUSAND;
    7. long t1=System.currentTimeMillis();
    8. testSystem(times);
    9. long t2=System.currentTimeMillis();
    10. System.out.println(t2-t1);
    11. testCalander(times);
    12. long t3=System.currentTimeMillis();
    13. System.out.println(t3-t2);
    14. testDate(times);
    15. long t4=System.currentTimeMillis();
    16. System.out.println(t4-t3);
    17. }
    18. public static void testSystem(long times){//use 188
    19. for(int i=0;i<times;i++){
    20. long currentTime=System.currentTimeMillis();
    21. }
    22. }
    23. public static void testCalander(long times){//use 6299
    24. for(int i=0;i<times;i++){
    25. long currentTime=Calendar.getInstance().getTimeInMillis();
    26. }
    27. }
    28. public static void testDate(long times){
    29. for(int i=0;i<times;i++){
    30. long currentTime=new Date().getTime();
    31. }
    32. }
    33. }

     

    获取UUID的三种方式

    UUID.randomUUID();  //最常用
    UUID.fromString("095c64fe-c5bf-11ea-aec6-a402b9e2b04d");
    UUID.nameUUIDFromBytes("身份证号码".getBytes());

        randomUUID() 随机获取一个UUID,有极小的概率会重复
        fromString() 根据一个符合UUID格式的字符串获取,不常用,我都有了还获取干嘛。
        nameUUIDFromBytes() 根据一个字节数组获取,一般要求给定的字节数组不重复
     

  • 相关阅读:
    手把手教你使用HarmonyOS本地模拟器
    C语言-指针初阶(6)
    wandb报错Network error (ProxyError), entering retry loop
    【不三不四的脑洞】“被相亲对象拉黑“所引发的关于链表合并算法的思考
    关于读书伴我成长演讲稿格式及范例
    Can Language Models Make Fun? A Case Study in Chinese Comical Crosstalk
    【Python百日进阶-Web开发-Feffery】Day397 - fac其他02:AntdBackTop回到顶部
    建行广东江门分行:科技赋能,数据助力纠“四风”
    GIT 提交规范
    操作系统-死锁,锁
  • 原文地址:https://blog.csdn.net/m0_63270506/article/details/127120149