• 注册
当前位置:1313e > java >正文

vb.net format时间格式化到毫秒_Java快速入门(23) 日期和时间类

点击上方蓝色“小白轻松学编程”,添加“关注”

af48a9122450902ea7839d69af5134e5.png

2a9fe65af37fc9472e793cb776895316.png

(*五台山风景区,图片来源于网络)

文章目录

1 日期   2 应用场景

1 日期

Java在java.util包中提供了Date类,其封装了当前日期和时间。
Date类包含了下面两种构造器:

序号构造器 & 描述

1

Date() 这个构造器将对象初始化为当前日期和时间。
2Date(long millisec) 这个构造器有一个传入参数,这个参数是从1970年2月1日之后的毫秒数。

下表中列出了Date类中定义的方法:

序号方法及其描述
1boolean after(Date date)
当前日期在指定日期后面时返回true,否则返回false。
2boolean before(Date date)
当前日期在指定日期前面时返回true,否则返回false。
3Object clone( )
复制日期对象。
4int compareTo(Date date)
将两个日期进行比较。若当前日期与指定日期相同,则返回0;若当前日期在指定日期后面,则返回负数;若当前日期在指定日期前面,则返回正数。
5int compareTo(Object obj)
当obj是Date类型对象时,功能和conpareTo(Date date)方法相同;否则返回ClassCastException异常。
6boolean equals(Object date)
当前日期和指定日期的日期和时间都相同时返回true,否则返回false。
7long getTime( )
返回从1970年1月1日到当前日期经过的毫秒数。
8int hashCode( )
返回日期对象的哈希值。
9void setTime(long time)
设置日期时间,传入值为日期距离1970年1月1日经过的毫秒数。
10String toString( )
将日期对象转换为字符串返回。

2 获取当前日期和时间

下面代码中写的是Java中获取日期和时间的一种非常简单的方法。使用的是一个简单的Date对象然后用toString()方法来打印当前日期和时间。

import java.util.Date;public class DateDemo {   public static void main(String args[]) {      //初始化Date对象      Date date = new Date();      //以字符串形式输出日期      System.out.println(date.toString());   }}

程序输出如下:

on Oct 01 09:51:52 CDT 2020

3 日期的比较

下面是比较两个日期对象的方法:
  • 可以使用getTime()方法获取两个日期分别距离1970年2月1日的毫秒数,然后再比较毫秒数的大小

  • 使用before(),after()和equals()方法来比较。例如,每月的12日在18日之前,因此,new Date(99,2,12).before(new Date(99,2,18))返回true。

  • 使用compareTo()方法。这个方法由Comparable接口定义,且被Date类实现。

4 使用SimpleDateFormat来格式化Date

SimpleDateFormat类是一个可以格式化和解析日期的具体类(不是抽象类),其对系统的语言环境时敏感的。SimpleDateFormat允许我们使用自定义的日期模式来进行格式化。

程序实例

import java.util.*;import java.text.*;public class DateDemo {   public static void main(String args[]) {      Date dNow = new Date( );      SimpleDateFormat ft =       new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");      System.out.println("Current Date: " + ft.format(dNow));   }}

程序输出为:

Current Date: Mon 2020.09.01 at 09:14:09 PM PDT

5 简单的DateFormat格式化编码

要想指定日期时间的格式,需要用到日期模式字符串。在这个模式里面,所有用到的ASCII编码字符都被保留为模式字符,也就是下面这些:
字符说明举例
G描述时代AD
y2001
MJuly 或 07
d10
h时(1-12)12
H时(0-23)22
m30
s55
S毫秒234
E星期Tuesday
D一年中的第几天360
F一个月中的第n个星期几2(7月的第2个星期三)
w一年中的第几个星期40
W一个月中的第几个星期1
aA.M./P.M.的标识PM
k一天中的第几个小时(1-24)24
KAM或PM计时下的第几个小时(0-11)10
z时区Eastern Standard Time

6 使用printf()方法格式化Date

日期时间的格式化可以非常简单地使用printf()方法。我们可以用两个字符来表示格式,起始字符为t,后面的字符为后面一节中列出的编码。

程序实例

import java.util.Date;public class DateDemo {   public static void main(String args[]) {      //初始化Date对象      Date date = new Date();      //格式化日期后输出      String str = String.format("Current Date/Time : %tc", date );      System.out.printf(str);   }}

程序输出如下:

Current Date/Time : Mon Oct 01 16:37:57 MST 2020

如果我们需要每格式化一部分就要提供一次日期参数的话会有点不合理。因此,格式化字符串可以指定要格式化参数的索引来得到日期的每个部分。索引必须要紧随百分号(%)之后,并且以美元符号($)为结尾。以下面程序为例。

import java.util.Date;public class DateDemo {   public static void main(String args[]) {      //初始化日期对象      Date date = new Date();      //格式化日期并输出      System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date);   }}

程序输出如下:

Due date: Oct 01, 2020

另外,我们也可以使用左尖括号(

import java.util.Date;public class DateDemo {   public static void main(String args[]) {      //初始化日期对象      Date date = new Date();      //输出格式化的日期      System.out.printf("%s %tB %, "Due date:", date);   }}

程序输出:

Due date: Oct 01, 2020

7 日期和时间转换对应字符编码

字符说明举例
c完整的日期和时间Mon May 04 09:51:52 CDT 2009
FISO 8601日期2005-01-02
D美国日期格式(月/日/年)03/30/2020
T24小时制时间20:03:35
r12小时制时间07:02:42 pm
R24小时制时间,不包含秒数20:03
Y4位数的年份2019
y年份的后2位19
C年份的前2位20
B完整的月份名February
b月份的简写Feb
m月份的2位数表示01
d日期的2位数表示09
e日期的2位数表示(不展示开头的0)9
A完整的星期几Monday
a星期几的缩写Mon
Z时区PST
s从1970-01-01 00:00:00后的秒数1451254834
Q从1970-01-01 00:00:00后的毫秒数14512548345842
**提示** :除了上面提到的类和方法之外,还有其他有用的处理日期和时间的类,具体可以参考Java开发标准文档。

8 将字符串转换为日期

SimpleDateFormat类还有一些其它的方法,尤其是parse(),可以根据指定的格式来将字符串转换为日期类型。

程序实例

import java.util.*;import java.text.*;public class DateDemo {   public static void main(String args[]) {      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd");       String input = args.length == 0 ? "1818-11-11" : args[0];       System.out.print(input + " Parses as ");       Date t;      try {         t = ft.parse(input);          System.out.println(t);       } catch (ParseException e) {          System.out.println("Unparseable using " + ft);       }   }}

程序输出:

1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818

9 sleep方法让程序暂停一段时间

我们可以让程序暂停从1毫秒到任意长的时间。例如下面的程序中指定了暂停执行时间为3秒钟。
import java.util.*;public class SleepDemo {   public static void main(String args[]) {      try {          System.out.println(new Date( ) + "\n");          Thread.sleep(5*60*10);          System.out.println(new Date( ) + "\n");       } catch (Exception e) {         System.out.println("Got an exception!");       }   }}

程序输出:

Sun June 03 18:04:41 GMT 2020Sun June 03 18:04:54 GMT 2020

10 测量经过的时长

有时候我们需要测量程序运行了多少毫秒,可以把上面的代码修改一下:
import java.util.*;public class DiffDemo {   public static void main(String args[]) {      try {         long start = System.currentTimeMillis( );         System.out.println(new Date( ) + "\n");         Thread.sleep(5*60*10);         System.out.println(new Date( ) + "\n");         long end = System.currentTimeMillis( );         long diff = end - start;         System.out.println("Difference is : " + diff);      } catch (Exception e) {         System.out.println("Got an exception!");      }   }}

程序执行后会输出:

Sun June 03 18:16:51 GMT 2020Sun June 03 18:16:57 GMT 2020Difference is : 5860

11 GregorianCalendar类

GregorianCalendar是Calendar类的具体实现类,该类实现了我们熟悉的公历日历。我们这篇教程中不讨论Calendar类,可以查看Java标准开发文档来学习。Calendar中声明的getInstance()类返回了GregorianCalendar初始化对象,其初始化的值是主机上的本地时区的日期和时间。GregorianCalendar类定义了两个时间区域:公元前和公元后。这两个时间区域在公历日历中表示两个区域。

程序实例

import java.util.*;public class GregorianCalendarDemo {   public static void main(String args[]) {      String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep",          "Oct", "Nov", "Dec"};      int year;      //使用当前日期和默认时区创建一个公历日期      GregorianCalendar gcalendar = new GregorianCalendar();      //输出当前日期和时间信息      System.out.print("Date: ");      System.out.print(months[gcalendar.get(Calendar.MONTH)]);      System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");      System.out.println(year = gcalendar.get(Calendar.YEAR));      System.out.print("Time: ");      System.out.print(gcalendar.get(Calendar.HOUR) + ":");      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");      System.out.println(gcalendar.get(Calendar.SECOND));      //测试当前年份是否为闰年      if(gcalendar.isLeapYear(year)) {         System.out.println("当前年份是闰年");      }else {         System.out.println("当前年份不是闰年");      }   }}
程序输出:
Date: Apr 23 2020Time: 11:25:27当前年份是闰年

—— E N D ——

小白轻松学编程

ID : xyuncoder

学习编程可以如此轻松!

630155df038bed400c8db9ef91a13bf0.png

如果觉得文章对你有用,

点击【在看】鼓励一下吧↓↓↓

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录