首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

给定日期的System.currentTimeMillis()?

在Java中,System.currentTimeMillis()是一个静态方法,用于获取当前时间的毫秒数。它返回的是自1970年1月1日00:00:00 UTC(称为Unix时间戳)以来的毫秒数。这个方法可以用于计算时间差、设置定时器等场景。

以下是一个简单的示例,展示如何使用System.currentTimeMillis()获取当前时间的毫秒数:

代码语言:java
复制
public class Main {
    public static void main(String[] args) {
        long currentTimeMillis = System.currentTimeMillis();
        System.out.println("当前时间的毫秒数: " + currentTimeMillis);
    }
}

在这个示例中,我们调用System.currentTimeMillis()方法,将返回的毫秒数存储在currentTimeMillis变量中,并将其打印到控制台。

需要注意的是,System.currentTimeMillis()返回的是本地时间,可能会受到系统时间的影响。如果需要获取UTC时间,可以使用Instant.now().toEpochMilli()方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

System.currentTimeMillis() 竟然存在性能问题?

来源:https://dwz.cn/M1NXgypa 在之前的文章中就提到了,System.currentTimeMillis()并非最佳实践。但是令人没想到的是,除了精度问题,竟还存在性能问题。...System.currentTimeMillis()是极其常用的基础Java API,广泛地用来获取时间戳或测量代码执行时长等,在我们的印象中应该快如闪电。...可见,并发调用System.currentTimeMillis()一百次,耗费的时间是单线程调用一百次的250倍。如果单线程的调用频次增加(比如达到每毫秒数次的地步),也会观察到类似的情况。...实际上在极端情况下,System.currentTimeMillis()的耗时甚至会比创建一个简单的对象实例还要多,看官可以自行将上面线程中的语句换成new HashMap之类的试试看。...不过,在System.currentTimeMillis()的效率没有影响程序整体的效率时,就不必忙着做优化,这只是为极端情况准备的。

2.9K00

System.currentTimeMillis() 存在性能问题...

但实际上在并发调用或者特别频繁调用它的情况下(比如一个业务繁忙的接口,或者吞吐量大的需要取得时间戳的流式程序),其性能表现会令人大跌眼镜。...可见,并发调用System.currentTimeMillis()一百次,耗费的时间是单线程调用一百次的250倍。 如果单线程的调用频次增加(比如达到每毫秒数次的地步),也会观察到类似的情况。...实际上在极端情况下,System.currentTimeMillis()的耗时甚至会比创建一个简单的对象实例还要多,看官可以自行将上面线程中的语句换成new HashMap之类的试试看。...来到HotSpot源码的hotspot/src/os/linux/vm/os_linux.cpp文件中,有一个javaTimeMillis()方法,这就是System.currentTimeMillis...不过,在System.currentTimeMillis()的效率没有影响程序整体的效率时,就不必忙着做优化,这只是为极端情况准备的。

1.9K20
  • 高并发场景下System.currentTimeMillis()的性能问题的优化

    本篇文章,我们一起来看下System.currentTimeMillis()的性能问题。...一、发现问题 从一个示例看System.currentTimeMillis()的问题: import org.springframework.util.StopWatch; public class...产生问题的主要原因是:在执行该 native 方法时会涉及从 用户态到内核态的切换,去调用 Linux 内核的时钟源,时钟源只有一个,因此在大量并发时会造成严重的资源竞争,从而导致出现性能问题 借助https...三、解决问题 我们从#1和#2可以看出,1ms内可以有多次调用System.currentTimeMillis(),造成频繁的从用户态切换到内核态,从而影响性能。...那么,在高并发情况下,可以考虑通过后台线程定时去调用 System.currentTimeMillis() 方法获取时间,然后保存在内存变量中,1ms精度下内存变量的值可以在线程复用,这样的话就能减少竞争以及用户态和内核态的切换

    99510

    System.currentTimeMillis的性能真有如此不堪吗?

    最近我在研究一款中间件的源代码时,发现它获取当前时间不是通过System.currentTimeMillis,而是通过自定义的System.currentTimeMillis的缓存类(见下方),难道System.currentTimeMillis...思索,System.currentTimeMillis有什么性能问题 看到这里,我恨不得马上打开IDEA,把代码里所有System.currentTimeMillis都给换掉,但是作为一个严谨的程序员,...于是我仔细地拜读了这些文章,总结了他们的观点: System.currentTimeMillis要访问系统时钟,这属于临界区资源,并发情况下必然导致多线程的争用 System.currentTimeMillis...(),不会导致测试的不公平 数据说话,System.currentTimeMillis的性能没有问题 通过改进测试代码(测试代码见文末),并添加了优化“大师”们的缓存时钟做对比,我得到了以下数据: 次数...实际环境中几乎是达不到上述测试中的多线程长时间并发调用System.currentTimeMillis这样的情况的,因而我认为没有必要对System.currentTimeMillis做所谓的“优化”

    1.2K11

    System.currentTimeMillis()存在性能问题

    System.currentTimeMillis()是极其常用的基础Java API,广泛地用来获取时间戳或测量代码执行时长等,在我们的印象中应该快如闪电。...可见,并发调用System.currentTimeMillis()一百次,耗费的时间是单线程调用一百次的250倍。如果单线程的调用频次增加(比如达到每毫秒数次的地步),也会观察到类似的情况。...实际上在极端情况下,System.currentTimeMillis()的耗时甚至会比创建一个简单的对象实例还要多,看官可以自行将上面线程中的语句换成new HashMap之类的试试看。...来到HotSpot源码的hotspot/src/os/linux/vm/os_linux.cpp文件中,有一个javaTimeMillis()方法,这就是System.currentTimeMillis...不过,在System.currentTimeMillis()的效率没有影响程序整体的效率时,就完全没有必要做这种优化,这只是为极端情况准备的。

    88510

    雪花算法对System.currentTimeMillis()优化真的有用么?

    ()获取时间,有一种说法是认为System.currentTimeMillis()慢,是因为每次调用都会去跟系统打一次交道,在高并发情况下,大量并发的系统调用容易会影响性能(对它的调用甚至比new一个普通对象都要耗时...()); System.out.println(System.currentTimeMillis() - timer); } } Windows:i5-4590 16G内存 4...linux上由于虚拟机,核数增加的时候,并无太多作用,但是时间对比于直接调用 System.currentTimeMillis()其实是变慢的。...(); } 下面是1千万id,八个线程,测出来调用timeGen()的次数,也就是可以看出时间冲突的次数: 平台/方法 SystemClock.now() System.currentTimeMillis...还有一个残酷的事实,那就是自己定义的后台时间刷新,获取的时间不是那么的准确。在linux中的这个差距就更大了,时间冲突次数太多了。

    69330

    别再用System.currentTimeMillis()!拥抱StopWatch优雅计算程序执行耗时

    需求 有时需要记录程序执行时间,最简单就是打印当前时间与执行完时间的差值,缺点是: 执行大量测试的话就很麻烦 不直观 如果想对执行的时间做进一步控制,则需要在程序中很多地方修改 于是 Spring提供了一个...Thread.sleep(1000); sw.stop(); System.out.println(sw.getLastTaskTimeMillis()); } } 以优雅的格式打出所有任务的耗时以及占比...; logger.info(watch.prettyPrint()); return sequence; } getTotalTimeSeconds() 获取总耗时秒,同时也有获取毫秒的方法...prettyPrint() 优雅的格式打印结果,表格形式 shortSummary() 返回简短的总耗时描述 getTaskCount() 返回统计时间任务的数量 getLastTaskInfo...().getTaskName() 返回最后一个任务TaskInfo对象的名称

    77220

    实用主义:JS判断给定日期是第几周

    前言 这是今天遇到的面试题,题目 写一个函数,判断给定的日期是几月的第几周,当月1日属于上一月的,该周计入上一月。...例如: 1)输入日期2016-02-01,返回结果为2-1,表示2016年2月1日属于2月的第一周; 2)输入日期2016-09-01,返回结果为8-5,表示2016年9月1日属于8月的第五周。...(这里计算一周是从周一到当周周天算为一周;某天是属于某月的某一周的。以2016年4月为例:4月4日至10日为4月的第一周;4月1日至3日不属于4月的周次,而是归入3月计算。)...粗略的网上搜索了一下,不是原题,OK开始动手分析 分析 首先需要把给定日期转换为一个Date类型 str = Date.parse(str); str = new Date(str);...Date类型的使用,我对这部分掌握不怎么牢靠,所以再次翻越了JS高程,照着Date的方法写的,难点在于处理本月前几天,看看是不是属于上个月的周数 就是这样:)

    5.3K80

    System.currentTimeMillis() 存在性能问题

    注意看一下JIT的位置 中文维基上对逃逸分析的描述基本准确,摘录如下: 在编译程序优化理论中,逃逸分析是一种确定指针动态范围的方法——分析在程序的哪些地方可以访问到指针。...逃逸分析确定某个指针可以存储的所有地方,以及确定能否保证指针的生命周期只在当前进程或线程中。...简单来讲,JVM中的逃逸分析可以通过分析对象引用的使用范围(即动态作用域),来决定对象是否要在堆上分配内存,也可以做一些其他方面的优化。 以下的例子说明了一种对象逃逸的可能性。...class EscapeAnalysisTest { public static void main(String[] args) throws Exception { long start = System.currentTimeMillis...(); for (int i = 0; i < 5000000; i++) { allocate(); } System.out.println((System.currentTimeMillis

    57010

    还在用 System.currentTimeMillis() 统计代码耗时?太 Low 啦

    能浪的浪,才是好浪! 每天 10:33 更新文章,每天掉亿点点头发......05、以优雅的格式打出所有任务的耗时以及占比 06、序列服务输出耗时信息 07、更多用法 08、总结 ---- 01、背景 有时我们在做开发的时候需要记录每个任务执行时间,或者记录一段代码执行时间,...最简单的方法就是打印当前时间与执行完时间的差值,然后这样如果执行大量测试的话就很麻烦,并且不直观,如果想对执行的时间做进一步控制,则需要在程序中很多地方修改,目前spring-framework提供了一个...项目地址:https://github.com/YunaiV/ruoyi-vue-pro 02、示例 我们来看几个示例 基于微服务的思想,构建在 B2C 电商场景下的项目实战。...getTotalTimeSeconds() 获取总耗时秒,同时也有获取毫秒的方法 prettyPrint() 优雅的格式打印结果,表格形式 shortSummary() 返回简短的总耗时描述 getTaskCount

    31630

    雪花算法对System.currentTimeMillis()优化真的有用么?

    前面已经讲过了雪花算法,里面使用了System.currentTimeMillis()获取时间,有一种说法是认为System.currentTimeMillis()慢,是因为每次调用都会去跟系统打一次交道...,在高并发情况下,大量并发的系统调用容易会影响性能(对它的调用甚至比new一个普通对象都要耗时,毕竟new产生的对象只是在Java内存中的堆中)。...()); System.out.println(System.currentTimeMillis() - timer); } } Windows:i5-4590 16G内存 4核...linux上由于虚拟机,核数增加的时候,并无太多作用,但是时间对比于直接调用 System.currentTimeMillis()其实是变慢的。...(); } 下面是1千万id,八个线程,测出来调用timeGen()的次数,也就是可以看出时间冲突的次数: 平台/方法 SystemClock.now() System.currentTimeMillis

    45400

    别再用System.currentTimeMillis()!拥抱StopWatch优雅计算程序执行耗时

    需求 有时需要记录程序执行时间,最简单就是打印当前时间与执行完时间的差值,缺点是: 执行大量测试的话就很麻烦 不直观 如果想对执行的时间做进一步控制,则需要在程序中很多地方修改 于是 Spring提供了一个...Thread.sleep(1000); sw.stop(); System.out.println(sw.getLastTaskTimeMillis()); } } 以优雅的格式打出所有任务的耗时以及占比...; logger.info(watch.prettyPrint()); return sequence; } getTotalTimeSeconds() 获取总耗时秒,同时也有获取毫秒的方法...prettyPrint() 优雅的格式打印结果,表格形式 shortSummary() 返回简短的总耗时描述 getTaskCount() 返回统计时间任务的数量 getLastTaskInfo...().getTaskName() 返回最后一个任务TaskInfo对象的名称

    34651

    你还在用System.currentTimeMillis()打印代码执行时间?

    前言 Hutool是一个小而全的Java工具类库,里面集成了很多实用的工具类,比如文件、流、加密解密、转码、正则、线程、XML等,通过这些工具类就可以快速实现开发。...本博客分享Hutool TimeInterval的基本使用,通过这个工具类,以后代码里就不需要为了打印代码执行时间,写了很多System.currentTimeMillis()来计算了 官网:https...创建Springboot项目 新建一个项目,选择Spring Initializr,这里使用spring给我的服务url 选择jdk版本,maven类型的项目 官网默认没集成hutool,那就后面手动添加吧...使用TimeInterval 在没有使用huttol之前,我们打印一下代码的执行时间,都需要通过System.currentTimeMillis()进行打印,如果代码块很多逻辑,就需要多次使用System.currentTimeMillis...() @Test void testNeedTime() { long startTime = System.currentTimeMillis(); AtomicInteger

    58430

    别再用 System.currentTimeMillis 统计耗时了,太LOW,这个工具类好用到爆!

    stopWatch.stop(); } Spring Boot 是用 StopWatch 来统计耗时的,而通常情况下,我们会用 System.currentTimeMillis() 来统计耗时,对吧?...)); } 对比之下,我们就能发现,JDK 提供的 System.currentTimeMillis() 没有 Spring 提供的 StopWatch 简洁、清晰。...那也就是说,如果你的项目中没有使用 Spring 全家桶,只用了 hutool 工具包,那就可以使用 hutool 的 StopWatch 来代替 System.currentTimeMillis()。...System.nanoTime() 来计时的,本质上和 System.currentTimeMillis() 差别并不大。...看到这,大家可能会恍然大悟,StopWatch 不过是披着一层外衣的 System.currentTimeMillis() 嘛? 但妙就妙在,这层外衣足够的漂亮,足够的优雅。

    66940

    别再用 System.currentTimeMillis() 统计耗时了,太 Low,StopWatch 好用到爆!

    from: 公众号Java技术栈  */ @Test public void jdkWasteTime() throws InterruptedException {     long start = System.currentTimeMillis...", System.currentTimeMillis() - start); } System.currentTimeMillis...这种方式统计耗时确实是用的最多的,因为它不用引入其他的 JAR...()); 来看最后的输出结果: 不过有一点不友好的是,格式化结果显示的是纳秒,而且不能修改。。...当然,以上两个 StopWatch 的功能也远不止栈长介绍的,栈长介绍的这些已经够用了,更多的可以深入研究。...工具包中的,更灵活、更强大,如果不想额外引入包,也可以考虑 Spring 中的,根据自己的系统需求定。

    93410

    Excel实战技巧:使用日期时间值

    图1 5.找出给定日期是星期几 如果想要确定一天是周末还是工作日,只需使用WEEKDAY()函数即可完成此操作。...图2 7.加/减日期 由于Excel日期实际上是数字,因此可以通过将一个日期与另一个日期相减来找出两个给定日期之间的差。例如,=DATE(2021,7,31)-DATE(2021,7,1)返回30。...要将给定日期添加n天,只需使用给定日期加上该数字即可,例如,="2021-8-8"+14将返回2021-8-22。...10.常用日期/时间函数 Excel有许多日期和时间函数,下面是常用的一些: WEEKDAY函数:返回代表一周中的第几天的数值。 DAY函数:返回一个月中第几天的数值。 MONTH函数:返回月份值。...TEXT函数:根据指定的格式将日期转换成相应的日期格式显示。 =EDATE(date,1):返回下月的同一天日期。 =EOMONTH(date,0):返回该月最后一天的日期。

    3.9K30

    【C语言刷题每日一题#牛客网HJ73】——计算日期到天数转换(给定日期,计算是该年的第几天)

    此问题解决方法不唯一,这里介绍的是一种使用数组和循环实现的简单办法 问题描述 思路分析 问题的要求是输入一个日期,计算这是当年的第几天——要解决这个问题,逻辑就是将输入日期当月之前整月的天数加起来,再加上当月的天数...,得到的就是我们想要的结果 我们分步来完成 首先,完成对输入的要求 创建三个整型变量分别用来存储年月日 按照题目的要求读取并存储到变量中 int year = 0, month = 0, day =...0; scanf("%d %d %d", &year, &month, &day); 数据结构构建部分 其次,想要将整月的天数加起来,需要考虑到每个月的天数各不相同 这里用一个最简单的方法——用数组来实现对不同月份天数不同的处理...之所以要在第一个元素放数组0,是因为这样可以使数组每个元素的下标对应月份 不过,需要注意的一个点是——考虑到年份的不同,闰年的2月比正常情况下要多一天 所以额外进行一个判断,如果年份是闰年,数组下标为...然后用一个循环将输入的月份之前的整月天数加起来 在循环结束之后,将循环内得到的计算结果再加上当月的天数就是某年某月某日所处在当年的天数啦 int days = 0; for (int i = 0; i

    8210
    领券