java中获取了当前系统地时间,怎样每秒获取更新一次呢?

java中获取了当前系统地时间,怎样每秒获取更新一次呢?,第1张

楼上说得不错,我补充一点,你先开启一个线程,然后在线程里面写一个死循环,让java代码不断的去获取系统时间,注意一定要把死循环放在你单独开启的那个线程里面,不然会出错哦 可以用while(true){代码} 这种形式来写,循环代码里面主要包含两个内容,一个是获取系统当前时间,然后让线程睡眠一秒钟,就是调用Thread里面的sleep方法,这样就可以了

Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着很重要的地位,所以在这里想对这两个类进行一个基本的讲解,由于技术有限,不到之处请指正。

Date类顾名思义,一看就知道是和日期有关的类了,这个类最主要的作用就是获得当前时间了,然而这个类里面也具有设置时间以及一些其他的功能,可是由于本身设计的问题,这些方法却遭到众多批评,而这些遭受批评的功能都已移植到另外一个类里面,这就是今天要讲到的第二个类Calendar里面。

在讲两个类之前,这里又不能不多提一个类,那就是DateFormat类,这个类是用来格式化日期的,稍后也会讲到。

首先,让我们来看一个获取当前时间的例子:

Date date = new Date();

Systemoutprintln(dategetTime());上面的语句首先创建了Date的一个对象,接着使用getTime方法获得当前的时间,但是注意了,输出后的结果确实一串长整型的数字,这是为什么?实际上这是系统根据当前时间计算出来的一个long型的数,至于是如何计算出来的就不在本文中讲述了,那既然这样的话又如何显示正确的时间呢?这就要利用到上面的DateFormat类了,这个类是一个基类,它有一个子类是SimpleDateFormat,具体用法请看下面的代码:

Date date = new Date();

SimpleDateFormat dateFm = new SimpleDateFormat("EEEE-MMMM-dd-yyyy");

Systemoutprintln(dateFmformat(date));这段代码开始创建了一个Date的对象,用来获取当前时间,而重点就在于后面的SimpleDateFormat对象,这个对继承了DateFormat,利用format方法对Date对象进行格式化,然后输出,而格式的定制是由用户定制的,EEEE代表星期,MMMM代表月份,而dd代表日,yyyy代表年。使用这个方法就可以根据用户自定义的格式进行输出时间。

上面介绍了由用户自定义格式的输出时间,下面将来介绍通过JAVA类库提供的标准格式输出时间,这就要用到DateFormat类了,请看以下代码:

Date date = new Date();

DateFormat dateFm = DateFormatgetDateTimeInstance(DateFormatSHORT,

DateFormatSHORT);

Systemoutprintln(dateFmformat(date));这里使用的方法和用户自定义的方法差不多,只是这里使用的是一个抽象类,由于DateFormat是一个抽象类,所以它不能通过构造函数构造对象,在这里是通过getDateTimeInstance()方法获得该对象,而所传递的参数就是DateFormat里面定义的一些常量,系统根据这些常量输出当前时间,由于这里使用的是getDateTimeInstance方法,所以将传递两个常量参数,用来分别格式化日期和当前的时间。

上面讲述了如何获得系统时间以及如何格式化输出,那如果想获取或者设置时间当中的某一部分又该如何呢?例如年,月,日。这就要靠Calendar这个类了,这个类也是一个抽象类,它有一个子类GregorianCalendar,接下来我会利用这个子类来演示这个过程,请看以下代码:

DateFormat dateFormat = DateFormatgetDateInstance(DateFormatFULL);

GregorianCalendar cal = new GregorianCalendar();

calsetTime(new Date());

Systemoutprintln("System Date: " + dateFormatformat(calgetTime()));

calset(GregorianCalendarDAY_OF_WEEK,GregorianCalendarFRIDAY);

Systemoutprintln("After Setting Day of Week to Friday: " +

dateFormatformat(calgetTime()));

这段代码当中,首先创建了一个DateFormat对象进行格式设置,接着创建了一个GregorianCalendar对象cal,接着使用calsetTime()方法设置cal对象中的时间为当前时间,然后通过format格式化由calgetTime()返回的时间进行输出,后面利用set方法设置cal的日期为当前星期的FRIDAY,此时cal中存储的时间就是这个星期五的该时刻,而后面利用format格式化输出,假如当前时间为2005年1月27日星期4的11点30分,那么最后将那句将会输出2005年1月28日星期5的11点30分。

代码示例:Date date = new Date();// 当前时间Systemoutprintln(date);// 5秒前时间取得datesetSeconds(dategetSeconds() - 5);Systemoutprintln(date);

不应该把run方法写在main()函数里(当然你要非写在里面也有方法),在main外面重写run方法。然后在main方法里定义个thread 对象add 这个runnable引用,然后调用thread的start方法。就行了

java中,日期函数的实现方法是通过获取当前时间距离格林治时间1970-1-1 00:00:00的时间差额,获取到时间相差的毫秒数。这个函数在jdk中是直接调用的系统相关的函数获取的,至于这个数据,是通过专门的时钟晶片进行统计的。会有相关的位置存放时间。

如果你想知道更具体的,就参考下JDK中的源码吧,这是最详细的。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12176647.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存