Java的时间是通过字节码指令来控制的,所以 java程序的运行时间是通过字节码指令来控制的。但是由于 Java程序在运行时, JVM会产生一些状态,所以在执行 JVM指令时, JVM也会产生一些状态。 我们在执行 java程序时,主要是通过字节码指令来控制 Java程序运行时的状态,而 Java程序中的每个字节码指令都是有意义的。其中有一条指令就是获取当前时间。下面我们通过实例来学习一下如何在 Java中通过解析字节码指令获取当前时间:

  • 1.获取当前时间

    第一步:我们需要将 Java程序的运行时状态(JVM)转换成一个字节码指令,也就是需要将当前时间转化成一个二进制的字符串,因为字节码指令是有意义的,所以我们可以将这个字符串作为 Java程序运行时的一个状态。 第二步:我们需要将这个字符串转换成一个可以进行解析的二进制,也就是我们需要将这个字符串转换成一个可以在内存中存储的二进制数字,即 byte [],我们可以将这个字符串转换成一个字节,也就是 byte []。 第三步:我们需要将这个字符串作为 Java程序运行时的一个状态,也就是 java程序运行时的时间。 第五步:我们需要将当前时间和当前日期进行比较。 在上面的例子中,我们需要获取当前时间和当前日期。可以看到,在获取当前时间时,需要先将 byte []转换成一个字节,然后再将这个字节存储为二进制数字,这样才能在内存中进行存储。 下面我们再来看一下 java程序中可以通过获取当前时间来实现哪些功能。 JVM是用来对 Java程序进行管理和控制的。JVM可以执行各种类型的 Java程序。其中最重要的功能就是对对象进行管理和控制。java是一种面向对象的语言,所以我们在使用 java编写程序时也要遵循面向对象的原则。下面我们再来看一下如何获取当前时间: 通过上面两个例子可以看出 Java中有两种方法可以获取当前时间:

  • 2.解析字节码指令

    上面的代码是通过调用 yaml类中的 yaml. start方法来获取当前时间的,其内部调用了两个类来获取当前时间,下面我们来看看这两个类是如何实现的。 在解析字节码指令之前,我们需要先知道在 Java程序中有哪些字节码指令是有意义的。在 java. util. interface中定义了26种字节码指令,我们知道在 Java中只有26种字节码指令,而除了26种之外还有一些字节码指令是没有意义的。下面我们就来了解一下这些没有意义的字节码指令都有哪些。 首先我们来了解一下在 java. util. interface中定义的字节码指令有哪些。 上面 Java代码中的 yaml类定义了26种字节码指令,在 Java中只有26种字节码指令,所以 Java中的26种字节码指令都是没有意义的,并且26种字节码指令都是无符号整数(Unsafe Number)。 无符号整数(Unsafe Number),又叫浮点数,是一种与实数(实数)一一对应的整数,所以也可以叫做实数整数(Positive Number)。无符号整数有如下特点: (1)实数具有加法和乘法运算符,而浮点数只有加法和乘法运算符。 (2)无符号整数可以用任何自然数表示,而浮点数只能表示有限小数。 (3)无符号整数在数值上是连续的,而浮点数是离散的。 如果一个程序需要在有限时间内得到某个答案,那么就需要使用浮点数。而在 Java中无符号整数也就是指浮点数,比如8位2进制的1~9这10个数字是不能作为浮点数来表示的。 Java中的字节码指令共有26种,但是并不是所有字节码指令都有意义。上面这条字节码指令返回值为0,表示当前时间为0; 上面26条没有意义的字节码指令返回值均为0。

  • 3.运行结果

    如图所示,在运行 java程序时,可以看到执行的字节码指令中有一条是获取当前时间的指令。这条字节码指令中有一个参数,该参数是 java程序运行时所处的状态,这个参数的作用就是控制 JVM在执行这条字节码指令时,要将当前时间记录下来。 如图所示,当执行 java程序时,由于 JVM运行的状态不同,所以会有不同的结果。当我们将当前时间记录下来时, JVM会执行下面这条字节码指令: 在执行该字节码指令时, JVM会将当前时间记录下来,而 JVM的运行状态也会被改变。当我们将当前时间记录下来后,可以在 java程序中对该字节码指令进行一些特殊处理。如将其解析为数字后再保存下来等。当然这只是一个例子,实际情况比这复杂的多。这里只是为了说明 java程序中获取时间是有多种方式的。

  • 常用的java获取时间的代码 :

  • 1. 获取当前时间戳(毫秒数):
    ```java
    long timestamp = System.currentTimeMillis();
    ```
    2. 获取当前日期时间:
    ```java
    Date date = new Date();
    ```
    3. 格式化日期时间为字符串:
    ```java
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String formattedDate = sdf.format(new Date());
    ```
    4. 解析字符串为日期时间:
    ```java
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = sdf.parse("2021-01-01 00:00:00");
    ```
    5. 获取当前年份、月份、日期、小时、分钟、秒钟:
    ```java
    Calendar calendar = Calendar.getInstance();
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始,需要加1
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    int hour = calendar.get(Calendar.HOUR_OF_DAY);
    int minute = calendar.get(Calendar.MINUTE);
    int second = calendar.get(Calendar.SECOND);
    ```

java 获取时间的方法相关推荐

  1. linux java获取路径_linux中java获取路径的方法

    linux中java获取路径的方法 发布时间:2020-05-06 11:11:26 来源:亿速云 阅读:700 作者:小新 今天小编给大家分享的是linux中java获取路径的方法,相信很多人都不太 ...

  2. Java获取时间时间格式化最全总结

    Java获取时间&时间格式化最全总结 最近遇到很多在Java里获取当前时间的问题,有的要求五花八门的,今天总结一下在Java中获取时间的方法和时间输出的格式化. 获取方式 java.util. ...

  3. java获取文件名后缀方法

    Java是一种应用广泛的编程语言,可以通过多种方式来实现对文件的操作.如文件名后缀.文件扩展名等.今天我们来看下 Java是如何获取文件名后缀的吧! 1.打开一个空文件,将其复制到一个新的文件夹中. ...

  4. java获取文件大小的方法

    目前Java获取文件大小的方法有两种: 1.通过file的length()方法获取: 2.通过流式方法获取: 通过流式方法又有两种,分别是旧的java.io.*中FileInputStream的ava ...

  5. PB 中获取时间的方法

    PB 中获取时间的方法 1.获取当前日期和时间 sle_2.text= string(today(),'yyyy-mm-dd')+ " " + string(now(),'hh:m ...

  6. Java获取时间格式(年月日时分秒毫秒)

    Java中描述日期时间调用Date类型,该类型存储有时间的年月日.时分秒信息. Date系统时间是以 1970年0时0分0秒 开始计时. 其中: 需要获取的时间单位 格式 年 YYYY or yyyy ...

  7. java获取时间的网站_如何获取网站服务器的时间

    原理是提取网站http应答报文中的时间信息. (但是请不要用此方法来获取www.bjtime.cn的时间,原因见后) 1. 以下是javascript获取服务器时间的测试代码: var xhr = n ...

  8. java获取时间_java获取Date时间的各种方式汇总

    java获取Date时间的各种方式为大家分享如下 常用的时间获取方式 public class DateUtils { /** * 获取时间戳 * 输出结果:1438692801766 */ @Tes ...

  9. JAVA获取资源的方法

    类名.class=对象.getClass() 获得该类的Class对象 java获取当前工作路径System.getProperty("user.dir"); java获取类所在路 ...

最新文章

  1. 2W 字详解 Redis 6.0 集群环境搭建实践
  2. NC:MetaSort通过降低微生物群落复杂度以突破宏基因组组装难题
  3. 序列化和反序列化--转
  4. python web server_Python实现简易版的Web服务器(推荐)
  5. 作者:桑基韬(1985-),男,博士,中国科学院自动化研究所副研究员
  6. Nginx进程间通讯方式
  7. tapestry mail freemarker的使用
  8. 如何扩容LVM逻辑卷
  9. 问题 A: 百钱买百鸡问题
  10. C#用yield模仿js的带 index的foreach
  11. 计算机中文无敌版,与电脑下象棋无敌版
  12. 怎么恢复佳能相机SD卡CF卡误删除格式化的MOV视频
  13. 机器学习基础:概率论基础
  14. C# 中的Finalize 和Dispose(bool disposing)和 Dispose()
  15. 25.龙贝格求积公式
  16. amp;#9733;用辩证数学解答“缸中之脑”
  17. eeepc linux 窗口管理器,EeePC安装Windows 7全教程 全机型适用
  18. python新年贺卡_写个新年贺卡生成器,各位小伙伴们新年快乐呀~
  19. 基于 Nginx 的 HTTPS 性能优化
  20. mysql字段中有问号_Mysql数据库,表中有中文时,select出来好多问号(?)的解决方法...

热门文章

  1. MySQL基础--MySQL数据库基本操作
  2. 如何精准查找 Maven 依赖
  3. C语言中 .c 和 .h 文件有什么关系?
  4. 微信小程序实现大转盘抽奖----踩坑之路
  5. 2019计算机电源海关征税,2019年海关税率汇总,海淘常见产品轻松算税费啦~
  6. 一文读懂 协方差矩阵
  7. 5 Hibernate:Java Persistence API (JPA) 入门
  8. 计算机主机箱连接线路,怎样连接电脑所有配件? 电脑主机与显示器接线安装步骤...
  9. 原生Android手机管家,腾讯手机管家Android 7.13版更新 你的专属管家已上线
  10. Bresenham改进算法结合wu反走样算法画直线