在java中原始时间_Java 日期时间

Java 日期时间

java.util包提供了Date类来封装当前的日期和时间。 Date类提供两个构造函数来实例化Date对象。

第一个构造函数使用当前日期和时间来初始化对象。

Date( )

第二个构造函数接收一个参数,该参数是从1970年1月1日起的微秒数。

Date(long millisec)

Date对象创建以后,可以调用下面的方法。

序号方法和描述

1boolean after(Date date)

若当调用此方法的Date对象在指定日期之后返回true,否则返回false。

2boolean before(Date date)

若当调用此方法的Date对象在指定日期之前返回true,否则返回false。

3Object clone( )

返回此对象的副本。

4int compareTo(Date date)

比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。

5int compareTo(Object obj)

若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。

6boolean equals(Object date)

当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。

7long getTime( )

返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

8int hashCode( )

返回此对象的哈希码值。

9void setTime(long time)

用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。

10String toString( )

转换Date对象为String表示形式,并返回该字符串。

获取当前日期时间

Java中获取当前日期和时间很简单,使用Date对象的 toString()方法来打印当前日期和时间,如下所示:

import java.util.Date;

public class DateDemo {

public static void main(String args[]) {

// 初始化 Date 对象

Date date = new Date();

// 使用 toString() 函数显示日期时间

System.out.println(date.toString());

}

}

以上实例编译运行结果如下:

Mon May 04 09:51:52 CDT 2013

日期比较

Java使用以下三种方法来比较两个日期:

使用getTime( ) 方法获取两个日期(自1970年1月1日经历的微妙数值),然后比较这两个值。

使用方法before(),after()和equals()。例如,一个月的12号比18号早,则new Date(99, 2, 12).before(new Date (99, 2, 18))返回true。

使用compareTo()方法,它是由Comparable接口定义的,Date类实现了这个接口。

使用SimpleDateFormat格式化日期

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: Sun 2004.07.18 at 04:14:09 PM PDT

简单的DateFormat格式化编码

时间模式字符串用来指定时间格式。在此模式中,所有的ASCII字母被保留为模式字母,定义如下:

字母描述示例

G纪元标记AD

y四位年份2001

M月份July or 07

d一个月的日期10

h A.M./P.M. (1~12)格式小时12

H一天中的小时 (0~23)22

m分钟数30

s秒数55

S微妙数234

E星期几Tuesday

D一年中的日子360

F一个月中第几周的周几2 (second Wed. in July)

w一年中第几周40

W一个月中第几周1

aA.M./P.M. 标记PM

k一天中的小时(1~24)24

K A.M./P.M. (0~11)格式小时10

z时区Eastern Standard Time

'文字定界符Delimiter

"单引号`

使用printf格式化日期

printf方法可以很轻松地格式化时间和日期。使用两个字母格式,它以t开头并且以下面表格中的一个字母结尾。例如:

import java.util.Date;

public class DateDemo {

public static void main(String args[]) {

// 初始化 Date 对象

Date date = new Date();

// 使用toString()显示日期和时间

String str = String.format("Current Date/Time : %tc", date );

System.out.printf(str);

}

}

以上实例编译运行结果如下:

Current Date/Time : Sat Dec 15 16:37:57 MST 2012

如果你需要重复提供日期,那么利用这种方式来格式化它的每一部分就有点复杂了。因此,可以利用一个格式化字符串指出要被格式化的参数的索引。

索引必须紧跟在%后面,而且必须以$结束。例如:

import java.util.Date;

public class DateDemo {

public static void main(String args[]) {

// 初始化 Date 对象

Date date = new Date();

// 使用toString()显示日期和时间

System.out.printf("%1$s %2$tB %2$td, %2$tY",

"Due date:", date);

}

}

以上实例编译运行结果如下:

Due date: February 09, 2004

或者,你可以使用

import java.util.Date;

public class DateDemo {

public static void main(String args[]) {

// 初始化 Date 对象

Date date = new Date();

// 显示格式化时间

System.out.printf("%s %tB %

"Due date:", date);

}

}

以上实例编译运行结果如下:

Due date: February 09, 2004

日期和时间转换字符

字符描述例子

c完整的日期和时间Mon May 04 09:51:52 CDT 2009

FISO 8601 格式日期2004-02-09

DU.S. 格式日期 (月/日/年)02/09/2004

T24小时时间18:05:19

r12小时时间06:05:19 pm

R24小时时间,不包含秒18:05

Y4位年份(包含前导0)2004

y年份后2位(包含前导0)04

C年份前2位(包含前导0)20

B月份全称February

b月份简称Feb

n2位月份(包含前导0)02

d2位日子(包含前导0)03

e2位日子(不包含前导0)9

A星期全称Monday

a星期简称Mon

j3位年份(包含前导0)069

H2位小时(包含前导0), 00 到 2318

k2位小时(不包含前导0), 0 到 2318

I2位小时(包含前导0), 01 到 1206

l2位小时(不包含前导0), 1 到 126

M2位分钟(包含前导0)05

S2位秒数(包含前导0)19

L3位毫秒(包含前导0)047

N9位纳秒(包含前导0)047000000

P大写上下午标志PM

p小写上下午标志pm

z从GMT的RFC 822数字偏移-0800

Z时区PST

s自 1970-01-01 00:00:00 GMT的秒数1078884319

Q自 1970-01-01 00:00:00 GMT的毫妙1078884319047

还有其他有用的日期和时间相关的类。对于更多的细节,你可以参考到Java标准文档。

解析字符串为时间

SimpleDateFormat 类有一些附加的方法,特别是parse(),它试图按照给定的SimpleDateFormat 对象的格式化存储来解析字符串。例如:

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);

}

}

}

以上实例编译运行结果如下:

$ java DateDemo

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

$ java DateDemo 2007-12-01

2007-12-01 Parses as Sat Dec 01 00:00:00 GMT 2007

Java 休眠(sleep)

你可以让程序休眠一毫秒的时间或者到您的计算机的寿命长的任意段时间。例如,下面的程序会休眠10秒:

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 May 03 18:04:41 GMT 2009

Sun May 03 18:04:51 GMT 2009

测量时间

下面的一个例子表明如何测量时间间隔(以毫秒为单位):

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 May 03 18:16:51 GMT 2009

Sun May 03 18:16:57 GMT 2009

Difference is : 5993

Calendar类

我们现在已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案是使用Calendar 类。

Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些。

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

创建一个代表系统当前日期的Calendar对象

Calendar c = Calendar.getInstance();//默认是当前日期

创建一个指定日期的Calendar对象

使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。

//创建一个代表2009年6月12日的Calendar对象

Calendar c1 = Calendar.getInstance();

c1.set(2009, 6 - 1, 12);

Calendar类对象字段类型

Calendar类中用一下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想

常量描述

Calendar.YEAR年份

Calendar.MONTH月份

Calendar.DATE日期

Calendar.DAY_OF_MONTH日期,和上面的字段意义完全相同

Calendar.HOUR12小时制的小时

Calendar.HOUR_OF_DAY24小时制的小时

Calendar.MINUTE分钟

Calendar.SECOND秒

Calendar.DAY_OF_WEEK星期几

Calendar类对象信息的设置

Set设置

如:

Calendar c1 = Calendar.getInstance();

调用:

public final void set(int year,int month,int date)

c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12

利用字段类型设置

如果只设定某个字段,例如日期的值,则可以使用如下set方法:

public void set(int field,int value)

把 c1对象代表的日期设置为10号,其它所有的数值会被重新计算

c1.set(Calendar.DATE,10);

把c1对象代表的年份设置为2008年,其他的所有数值会被重新计算

c1.set(Calendar.YEAR,2008);

其他字段属性set的意义以此类推

Add设置

Calendar c1 = Calendar.getInstance();

把c1对象的日期加上10,也就是c1所表的日期的10天后的日期,其它所有的数值会被重新计算

c1.add(Calendar.DATE, 10);

把c1对象的日期加上10,也就是c1所表的日期的10天前的日期,其它所有的数值会被重新计算

c1.add(Calendar.DATE, -10);

其他字段属性的add的意义以此类推

Calendar类对象信息的获得

Calendar c1 = Calendar.getInstance();

// 获得年份

int year = c1.get(Calendar.YEAR);

// 获得月份

int month = c1.get(Calendar.MONTH) + 1;

// 获得日期

int date = c1.get(Calendar.DATE);

// 获得小时

int hour = c1.get(Calendar.HOUR_OF_DAY);

// 获得分钟

int minute = c1.get(Calendar.MINUTE);

// 获得秒

int second = c1.get(Calendar.SECOND);

// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)

int day = c1.get(Calendar.DAY_OF_WEEK);

GregorianCalendar类

Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现。

Calendar 的getInstance()方法返回一个默认用当前的语言环境和时区初始化的GregorianCalendar对象。GregorianCalendar定义了两个字段:AD和BC。这些代表公历定义的两个时代。

下面列出GregorianCalendar对象的几个构造方法:

序号构造函数和说明

1GregorianCalendar()

在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。

2GregorianCalendar(int year, int month, int date)

在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar

3GregorianCalendar(int year, int month, int date, int hour, int minute)

为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。

4GregorianCalendar(int year, int month, int date, int hour, int minute, int second)

为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。

5GregorianCalendar(Locale aLocale)

在具有给定语言环境的默认时区内构造一个基于当前时间的 GregorianCalendar。

6GregorianCalendar(TimeZone zone)

在具有默认语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。

7GregorianCalendar(TimeZone zone, Locale aLocale)

在具有给定语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。

这里是GregorianCalendar 类提供的一些有用的方法列表:

序号方法和说明

1void add(int field, int amount)

根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。

2protected void computeFields()

转换UTC毫秒值为时间域值

3protected void computeTime()

覆盖Calendar ,转换时间域值为UTC毫秒值

4boolean equals(Object obj)

比较此 GregorianCalendar 与指定的 Object。

5int get(int field)

获取指定字段的时间值

6int getActualMaximum(int field)

返回当前日期,给定字段的最大值

7int getActualMinimum(int field)

返回当前日期,给定字段的最小值

8int getGreatestMinimum(int field)

返回此 GregorianCalendar 实例给定日历字段的最高的最小值。

9Date getGregorianChange()

获得格里高利历的更改日期。

10int getLeastMaximum(int field)

返回此 GregorianCalendar 实例给定日历字段的最低的最大值

11int getMaximum(int field)

返回此 GregorianCalendar 实例的给定日历字段的最大值。

12Date getTime()

获取日历当前时间。

13long getTimeInMillis()

获取用长整型表示的日历的当前时间

14TimeZone getTimeZone()

获取时区。

15int getMinimum(int field)

返回给定字段的最小值。

16int hashCode()

重写hashCode.

17boolean isLeapYear(int year)

确定给定的年份是否为闰年。

18void roll(int field, boolean up)

在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段。

19void set(int field, int value)

用给定的值设置时间字段。

20void set(int year, int month, int date)

设置年、月、日的值。

21void set(int year, int month, int date, int hour, int minute)

设置年、月、日、小时、分钟的值。

22void set(int year, int month, int date, int hour, int minute, int second)

设置年、月、日、小时、分钟、秒的值。

23void setGregorianChange(Date date)

设置 GregorianCalendar 的更改日期。

24void setTime(Date date)

用给定的日期设置Calendar的当前时间。

25void setTimeInMillis(long millis)

用给定的long型毫秒数设置Calendar的当前时间。

26void setTimeZone(TimeZone value)

用给定时区值设置当前时区。

27String toString()

返回代表日历的字符串。

实例

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;

// 初始化 Gregorian 日历

// 使用当前时间和日期

// 默认为本地时间和时区

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 22 2009

Time: 11:25:27

当前年份不是闰年

关于Calender 类的完整列表,你可以参考标准的Java文档。(编辑:雷林鹏 来源:网络)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何和后台接触的_后台产品,不只是做支持

最近在招聘后台产品经理,面试过程中提到一个问题,这个问题之前也困扰了我很久:你做的后台产品,价值体现在哪里?只是做业务支持么?今天就来聊聊这个话题。我是做后台产品出身,最开始入行做的是云…

java手写的html转图片格式_(Java实现)HTML转JPG,TIFF等图片格式和TIFF图片合并功能解决方案。...

上一篇文章说到了HTML转PDF的实现方式,而就在那个需求的另外一个方面,项目要求要实现页面转图片的需求,主要是JPG,TIFF,PNG等格式。弄得我有点囧,上次一直没搞定。也没找到合适的工具进行转换。前一小段时间…

云计算呼叫中心_干货|云呼叫中心系统和传统呼叫中心系统的区别在哪?

随着社会的发展,呼叫中心由传统的呼叫中心逐渐发展为云呼叫中心。然而关于这两者的区别,您知道吗?跟随畅远技术一同来了解一下吧......一、购买、安装不同传统呼叫中心软件在配置方面有几个特点:一次购买终身使用;安装…

java从键盘为数组赋值,java给数组赋值

java 动态数组赋值,java对象数组详解,java二维数组赋值,java给数组赋值java数组动态赋值,从零学java笔录-第24篇 图解一维数组在内存中,java二维数组赋值,java给数组赋值java 数组动态赋值,从零学java笔录-第24篇 图解一维数组在内存中,java二维数组赋值,java给数组赋值数组的基…

隔一段时间查找一次 golang_剑指 offer-04 二维数组中的查找

算法名称:二维数组中的查找题目内容:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该…

decorator php,php设计模式 Decorator(装饰模式)

/*** 装饰模式** 动态的给一个对象添加一些额外的职责,就扩展功能而言比生成子类方式更为灵活*/header("Content-type:text/html;charsetutf-8");abstract class MessageBoardHandler{public function __construct(){}abstract public function filter($msg);}class …

python中format函数用法简书_增强的格式化字符串format函数

自python2.6开始,新增了一种格式化字符串的函数str.format(),可谓威力十足。那么,他跟之前的%型格式化字符串相比,有什么优越的存在呢?让我们来揭开它羞答答的面纱。它通过{}和:来代替%。“映射”示例通过位置In [1]: …

在线电脑配置PHP源码,域名授权系统PHP源码 V2.7.0 支持盗版追踪

最新漂亮简洁大气的域名授权系统PHP源码,域名授权系统PHP版,功能强大带有后台,经过版本升级,全新美观大气的UI洁面!支持盗版追踪,与卡密系统对接购买卡密对域名进行授权,支持授权代码、到期时间…

python分词代码_中文分词--最大正向匹配算法python实现

最大匹配法:最大匹配是指以词典为依据,取词典中最长单词为第一个次取字数量的扫描串,在词典中进行扫描(为提升扫描效率,还可以跟据字数多少设计多个字典,然后根据字数分别从不同字典中进行扫描)。例如:词典…

python输出所有组合数_python – GridSearchCV是否存储了所有参数组合的所有分数?...

GridSearchCV使用“评分”来选择最佳估算器.训练GridSearchCV后,我希望看到每个组合的得分. GridSearchCV是否存储每个参数组合的所有分数?如果它如何获得分数?谢谢.这是我在另一篇文章中使用的示例代码.from sklearn.feature_extraction.text import Co…

php 504网关,504 gateway timeout什么意思

504 gateway time-out(504网关超时错误)是HTTP状态代码,这意味着一个服务器在尝试加载网页或填写浏览器的另一个请求时未从其访问的另一台服务器收到及时响应。换句话说,504错误通常表明不同的计算机,即您正在获取504消息的网站无法控制但依赖…

python 二维数组长度_剑指offer二维数组中的查找【Java+Python】

点击上方"蓝字",关注了解更多二维数组中的查找1. 题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组…

php 静态变量 引用,PHP的返回引用(方法名前加)和局部静态变量(static)

先阅读手册从函数返回一个引用,必须在函数声明和指派返回值给一个变量时都使用引用操作符 & :例子 17-13. 由函数返回一个引用有关引用的更多信息, 请查看引用的解释。在来看一段很多开源代码喜欢用的单例注册模式 class a{} class b{} function &am…

失物招领小程序_通知 | 保卫部拟设置失物招领处

保卫部拟设置失物招领处为规范对遗失物品的接收、登记、发放等工作,切实维护师生利益,保卫部拟设置失物招领处,现将有关失物招领的流程明确如下:1、失物招领地点:保卫部二楼中厅。2、遗失物的接收。师生将拾得的遗失物…

php获取表所有数据类型,php excel 导入 导入三级分类 表格应该怎么设计才能得到想要的数据格式?...

就是多个1级分类 下面有不确定个二级分类 二级分类下面有不确定个三级分类 我想获取到相关的数据组合写入数据库 但是这个格式不知道怎么排才能获取到对的数据有空的亲们给看看 帮下 谢谢有没有办法获取整列的值 然后根据长度去区分2列 然后再区分三列现在获取到的数据格式是按…

python数据清理的实践总结_python3常用的数据清洗方法(小结)

首先载入各种包:import pandas as pdimport numpy as npfrom collections import Counterfrom sklearn import preprocessingfrom matplotlib import pyplot as plt%matplotlib inlineimport seaborn as snsplt.rcParams[font.sans-serif] [SimHei] # 中文字体设置…

转转钓鱼php,最新转转钓鱼源码程序网站微信:mm88wk 最新转转源码 - 下载 - 搜珍网...

压缩包 : 转转钓鱼源码微:mm88wk.zip 列表转转/转转/360safe/转转/360safe/360webscan.php转转/360safe/webscan_cache.php转转/admin/转转/admin/add.php转转/admin/addsite.php转转/admin/adduser.php转转/admin/downfile.php转转/admin/download.php转转/admin/e…

PHP即将退出,PHP4即将退出历史舞台

http://www.phpeye.com/bbs/viewthread.php?tid92 PHP官方团队在php.net上发布了一则公告: Today it is exactly three years ago since PHP 5 has been released. In those three years it has seen many improvements over PHP 4. PHP 5 is fast, stablehttp://w…

redis 清空db下_PHP操作redis实现的分页列表

正文内容封装类文件如下:/* * redis 分页数据类库 */class redisPage{protected $_redis;protected $_redis_ip 127.0.0.1; //ipprotected $_redis_port 6379; //端口protected $_redis_db 0; //数据库号protected $_hash_prefix my_data; //前缀名称public fun…

php5.1.4,apache 2.2.2 + PHP5.1.4 不能运行的解_php

apache 2.2.2 php5.1.4 不能运行的解决办法.问题,使用传统的模块化方法安装PHP5.1.* apache 2.2.2 后不能启动,提示:"Cannot load C:/php/php5apache2.dll into server: The specified module could not be found."原因:PHP压缩包里的php5apache2.dll只适用于apach…