java中各种时间格式的转化要点

java中各种时间格式的转化要点
java中各种时间格式的转化要点

java中各种时间格式的转化

时间和日期中常用到的几个类:java.util.Date,

java.util.Calendar,

java.util.GregorainCalendar,

java.text.DateFormat,

java.text.SimpleDateFormat

java.util.Date :

表示特定瞬间,精确到毫秒

一天是24 * 60 * 60 = 86400 秒

世界时(UT 或UTC) , 格林威治时间(GMT), 格林威治时(GMT)和世界时(UT)

是相等的,格林威治时(GMT) 是标准的"民间"称呼, 世界时(UT) 是相同标准的

科学称呼。UTC 和UT 的区别是:UTC 是基于原子时钟的,UT 是基于天体观察的。(中文版的jdk 真是好啊,跟科普教材是的,呵呵)

常用的构造方法:

Date();

Date(long date)

(long date) 表示从标准基准时间(称为"历元" epoch ,即1970.1.1

00:00:00 GMT)经历的毫秒数。

还有一些构造方法已经deprecated 了

主要的方法:(介绍几个常用的,详细的查询jdk 文档)

boolean after(Date when) 测试日期在此日期之后。

boolean before(Date when) 测试日期在此日期之前。

Object clone() 返回此对象的副本

long getTime() 返回自1970.1.1 00:00:00 GMT 后,此对象表示的毫秒数

void setTime(long time) 设置此Date 对象,以表示1970 年1 月1 日

00:00:00 GMT 以后time 毫秒的时间点。

String toString() 将Date 对象转化成以下形式的

String:dow mon dd hh:mm:ss zzz yyyy

其中:dow 是一周中的某一天(Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

dow 是一周中的某一天(Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

mon 是月份(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep,

Oct, Nov, Dec)。

dd 是一月中的某一天(01 至31),显示为两位十进制数。

hh 是一天中的小时(00 至23),显示为两位十进制数。

mm 是小时中的分钟(00 至59),显示为两位十进制数。

ss 是分钟中的秒数(00 至61),显示为两位十进制数。60,61 是因为有"润秒" zzz 是时区(并可以反映夏令时)。标准时区缩写包括方法parse 识别的时区缩写。如果不提供时区信息,则zzz 为空,即根本不包括任何字符。

yyyy 是年份,显示为4 位十进制数。

使用System.currentTimeMillis() 获得当前系统时间的毫秒数

java.util.Calendar :

Calendar 类是一个抽象类.

Calendar rightNow = Calendar.getInstance();

可以使用三种方法更改日历字段:set()、add() 和roll()。

set(f, value) 将日历字段f 更改为value。

此外,它设置了一个内部成员变量,以指示日历字段f 已经被更改。尽管日历字段

f 是立即更改的,但是直到下次调用get()、getTime()、getTimeInMillis()、

add() 或roll() 时才会重新计算日历的时间值(以毫秒为单位)。因此,多次调

用set() 不会触发多次不必要的计算。

add(f, delta) 将delta 添加到f 字段中。这等同于调用

set(f, get(f) + delta)

roll(f, delta) 将delta 添加到f 字段中,但不更改更大的字段。

java.util.GregorianCalendar:

GregorianCalendar 是Calendar 的一个具体子类,提供了世界上大多数国家

使用的标准日历系统。

java.text.DateFormat:

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并

分析日期或时间。

java.text.SimpleDateFormat:

SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期-> 文本)、分析(文本-> 日期)和规范化。

SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。但是,

仍然建议通过DateFormat 中的getTimeInstance、getDateInstance 或getDateTimeInstance 来新的创建日期-时间格式化程序。每一个这样的类方法

都能够返回一个以默认格式模式初始化的日期/时间格式化程序。可以根据需要使用applyPattern 方法来修改格式模式。

日期和时间格式由日期和时间模式字符串指定。

在日期和时间模式字符串中,未加引号的字母'A' 到'Z' 和'a' 到'z'

被解释为模式字母,用来表示日期或时间字符串元素。

引用

字母日期或时间元素表示示例

G Era 标志符Text AD

y 年Year 1996; 96

M 年中的月份Month July; Jul; 07

w 年中的周数Number 27

W 月份中的周数Number 2

D 年中的天数Number 189

d 月份中的天数Number 10

F 月份中的星期Number 2

E 星期中的天数Text Tuesday; Tue

a Am/pm 标记Text PM

H 一天中的小时数(0-23)Number 0

k 一天中的小时数(1-24)Number 24

K am/pm 中的小时数(0-11)Number 0

h am/pm 中的小时数(1-12)Number 12

m 小时中的分钟数Number 30

s 分钟中的秒数Number 55

S 毫秒数Number 978

z 时区General time zone Pacific Standard Time; PST; GMT-08:00 Z 时区RFC 822 time zone -0800

引用

日期和时间模式结果

"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT "EEE, MMM d, ''yy" Wed, Jul 4, '01

"h:mm a" 12:08 PM

"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time

"K:mm a, z" 0:08 PM, PDT

"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM "EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700 "yyMMddHHmmssZ" 010*********-0700

"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700 获得当前系统的毫秒数:

代码

package org.lokvin.example.calendar;

public class CalendarExample1 {

public static void main(String[] args) {

java.util.Date date = new java.util.Date();

//获得当前系统的毫秒数,自1970.1.1 00:00:00 GMT long time = System.currentTimeMillis();

java.util.Date date1 = new java.util.Date(time);

System.out.println("date = " + date.toString());

System.out.println("millisecond = " + time);

System.out.println("date1 = " + date1.toString());

}

}

运行结果:

引用

date = Mon Dec 04 16:01:16 CST 2006

millisecond = 1165219276771

date1 = Mon Dec 04 16:01:16 CST 2006

代码

package org.lokvin.example.calendar;

import java.util.Calendar;

import java.util.GregorianCalendar;

public class CalendarExample2 {

public static void main(String[] args) {

//获得当前日期

Calendar calendar = Calendar.getInstance();

int era = calendar.get(Calendar.ERA);// 0 = BC, 1 = AD

System.out.println("ERA = " + era);

int year = calendar.get(Calendar.YEAR); //2006

System.out.println("YEAR = " + year);

int month = calendar.get(Calendar.MONTH);

//获得当前月份,0..11 表示JAN..DEC

System.out.println("Month = " + month);//0 = JAN ... 11 = DEC

int day = calendar.get(Calendar.DAY_OF_MONTH);

System.out.println("Day of Month = " + day); // 1

//获得日期在本周的天数,Sun=1, Mon=2 ... Sta=7

int day_of_week = calendar.get(Calendar.DAY_OF_WEEK);

System.out.println("Day of Week = " + day_of_week);

//获得当前时间12 时制是Calendar.HOUR

int hour12 = calendar.get(Calendar.HOUR);

//获得AM ,PM , 0 = AM, 1 = PM

int ampm = calendar.get(Calendar.AM_PM);

System.out.println("hour 12 = " + hour12);

System.out.println("am pm = " + ampm); //0 = am , 1 = pm

//获得当前时间24 时制Calendar.HOUR_OF_DAY

int hour24 = calendar.get(Calendar.HOUR_OF_DAY);

System.out.println("hour 24 = " + hour24);

Calendar today = new GregorianCalendar(2006, Calendar.DECEMBER, 4);

//Calendar.getInstance() 得到当前具体到毫秒的一个时间点

System.out.println("calendar = " + calendar.getTime().toString());

//通过new GregorianCalendar(2006, Calendar.DECEMBER, 4)

//生成的calendar 除了指定的年,月,日其余为0(时分秒=0)

System.out.println("today = " + today.getTime().toString());

}

}

运行结果:

引用

ERA = 1

YEAR = 2006

Month = 11

Day of Month = 4

Day of Week = 2

hour 12 = 4

am pm = 1

hour 24 = 16

calendar = Mon Dec 04 16:22:42 CST 2006 today = Mon Dec 04 00:00:00 CST 2006

两个日期之间的比较:

代码

package org.lokvin.example.calendar;

import java.util.Calendar;

import java.util.GregorianCalendar;

/*

* 比较两个calendar 对象之间的先后

*/

public class CalendarExample3 {

public static void main(String[] args) {

//日期比较

Calendar xmas = new GregorianCalendar(2006, Calendar.DECEMBER, 25);

Calendar newYear = new GregorianCalendar(2007, Calendar.JANUARY, 1);

//比较两个日期先后

boolean flag = xmas.before(newYear);

System.out.println("flag = " + flag);

flag = xmas.after(newYear);

System.out.println("flag = " + flag);

//两个日期相差的毫秒数

long timeDiffMillis = newYear.getTimeInMillis() - xmas.getTimeInMillis();

System.out.println("time diff millis = " + timeDiffMillis);

//两个日期相差的秒数

long diffSecs = timeDiffMillis / 1000;

System.out.println("time diff secs = " + diffSecs);

//两个日期相差的分钟

long diffMins = timeDiffMillis / (1000 * 60);

System.out.println("time diff mins = " + diffMins);

//两个日期相差的小时

long diffHours = timeDiffMillis / (1000 * 60 * 60);

System.out.println("time diff hours = " + diffHours);

//两个日期相差的天

long diffDays = timeDiffMillis / (1000 * 60 * 60 * 24);

System.out.println("time diff days = " + diffDays);

}

}

运行结果:

引用

flag = true

flag = false

time diff millis = 604800000

time diff secs = 604800

time diff mins = 10080

time diff hours = 168

time diff days = 7

使用Calendar 计算年龄:

代码

package org.lokvin.example.calendar;

import java.util.Calendar;

import java.util.GregorianCalendar;

/*

* 计算年龄

*/

public class CalendarExample4 {

public static void main(String[] args) {

//创建生日的Calendar 对象

Calendar birthDate = new GregorianCalendar(1979, Calendar.JULY, 7);

Calendar today = Calendar.getInstance();

int age = today.get(Calendar.YEAR) - birthDate.get(Calendar.YEAR);

//如果还没有过生日,则age - 1

birthDate.add(Calendar.YEAR, age);

if(today.before(birthDate)){

age--;

}

System.out.println("age = " + age);

}

}

判断是否为闰年:

代码

package org.lokvin.example.calendar;

import java.util.GregorianCalendar;

/*

* 判断是否为闰年leap year

*/

public class CalendarExample5 {

public static void main(String[] args) {

//判断是否"闰年" leap year

GregorianCalendar cal = new GregorianCalendar();

boolean isLeapYear = cal.isLeapYear(1998);

System.out.println("is leap year 1998 = " + isLeapYear);

isLeapYear = cal.isLeapYear(2000);

System.out.println("is leap year 2000 = " + isLeapYear);

}

}

运行结果:

引用

is leap year 1998 = false

is leap year 2000 = true

获得其他时区的时间:

代码

package org.lokvin.example.calendar;

import java.util.Calendar;

import java.util.GregorianCalendar;

import java.util.TimeZone;

/*

* 获得其他时区当前时间

*/

public class CalendarExample6 {

public static void main(String[] args) {

Calendar cal = new GregorianCalendar();

int hour12 = cal.get(Calendar.HOUR);

int hour24 = cal.get(Calendar.HOUR_OF_DAY);

System.out.println("hour12 in our timezone = " + hour12);

System.out.println("hour24 in our timezone = " + hour24);

//获得其他时区的当前时间,根据zoneId 获得时区

Calendar calJap = new GregorianCalendar(TimeZone.getTimeZone("Japan"));

hour12 = calJap.get(Calendar.HOUR);

System.out.println("hour12 in japs timezone = " + hour12);

hour24 = calJap.get(Calendar.HOUR_OF_DAY);

System.out.println("hour24 in japs timezone = " + hour24);

//获得zoneId 的列表

String[] zoneIds = TimeZone.getAvailableIDs();

for(int i=0; i

String zoneId = zoneIds[i];

System.out.println("zone id = " + zoneId);

}

}

}

运行结果:

引用

hour12 in our timezone = 5

hour24 in our timezone = 17

hour12 in japs timezone = 6

hour24 in japs timezone = 18

zone id = Etc/GMT+12

zone id = Etc/GMT+11

zone id = MIT

zone id = Pacific/Apia

zone id = Pacific/Midway

...

格式化日期:

代码

package org.lokvin.example.calendar;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Date;

public class DateForamExample {

public static void main(String[] args) {

Date rightNow = new Date();

DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

DateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");

DateFormat format3 = new SimpleDateFormat("h:mm a");

DateFormat format4 = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z");

DateFormat format5 = new SimpleDateFormat("EEE, MMM, dd, ''yyyy");

DateFormat format6 = new SimpleDateFormat("yyyy.MM.dd kk:mm 'o''clock' a, zzzz");

DateFormat format7 = new SimpleDateFormat("yyyyy.MMMMM.dd GGG hh:mm aaa");

System.out.println("format1 = " + format1.format(rightNow));

System.out.println("format2 = " + format2.format(rightNow));

System.out.println("format3 = " + format3.format(rightNow));

System.out.println("format4 = " + format4.format(rightNow));

System.out.println("format5 = " + format5.format(rightNow));

System.out.println("format6 = " + format6.format(rightNow));

System.out.println("format7 = " + format7.format(rightNow));

}

}

输出结果:

引用

format1 = 2006-12-05 06:12:02

format2 = 2006-12-05

format3 = 6:12 下午

format4 = 2006.12.05 公元at 18:12:02 CST

format5 = 星期二, 十二月, 05, '2006

format6 = 2006.12.05 18:12 o'clock 下午, 中国标准时间

format7 = 02006.十二月.05 公元06:12 下午

取当月的第一天:

java.text.SimpleDateFormat format = new

java.text.SimpleDateFormat("yyyy-MM-01");

java.util.Date firstDay=new java.util.Date();

System.out.println("the month first day is

"+formats.format(firstDay));

取当月的最后一天:

Calendar cal = Calendar.getInstance();

int maxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH); java.text.Format formatter3=new

java.text.SimpleDateFormat("yyyy-MM-"+maxDay);

System.out.println(formatter3.format(cal.getTime()));

java处理日期时间 相加减

JAVA处理日期时间常用方法: 1.java.util.Calendar Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间1970年 1月1日的00:00:00.000,格里高利历)的偏移量。 [java]view plaincopy 1.Calendar cal=Calendar.getInstance();//使用默认时区和语言环境获得一个日历。 2.cal.add(Calendar.DAY_OF_MONTH,-1);//取当前日期的前一天. 3. 4.cal.add(Calendar.DAY_OF_MONTH,+1);//取当前日期的后一天. 5. 6.//通过格式化输出日期 7.java.text.SimpleDateFormat format=new java.text.SimpleDateFormat("yyyy-MM- dd"); 8. 9.System.out.println("Today is:"+format.format(Calendar.getInstance().getTime() )); 10. 11.System.out.println("yesterday is:"+format.format(cal.getTime())); 得到2007-12-25日期: [java]view plaincopy 1.Calendar calendar=new GregorianCalendar(2007,11,25,0,0,0); 2.Date date=calendar.getTime(); 3.System.out.println("2007Christmas is:"+format.format(date)); java月份是从0-11,月份设置时要减1. GregorianCalendar构造方法参数依次为:年,月-1,日,时,分,秒.

java中的日期处理类总结

java中的日期处理类总结:Date/Calendar/GregorianCalendar/DateFormat/SimpleDateFormat 类 今天花了好大一点时间把java的日期类做了一下整理,哈 1、Date类(该类现在很少用了) l Date类对象的创建: n 创建一个当前时间 //默认是创建一个代表系统当前日期的Date对象 Date d = new Date(); n 创建一个我们指定的时间的Date对象: 下面是使用带参数的构造方法,可以构造指定日期的Date类对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。 //创建一个代表2009年6月12号的Date对象 Date d1 = new Date(2009-1900, 6-1, 12); (注意参数的设置啊!) l 正确获得一个date对象所包含的信息 如: Date d2 = new Date(2009-1900, 6-1, 12); //获得年份(注意年份要加上1900,这样才是日期对象d2所代表的年份) int year = d2.getYear() + 1900; //获得月份(注意月份要加1,这样才是日期对象d2所代表的月份) int month = d2.getMonth() + 1; //获得日期 int date = d2.getDate();

//获得小时 int hour = d2.getHours(); //获得分钟 int minute = d2.getMinutes(); //获得秒 int second = d2.getSeconds(); //获得星期(注意:0代表星期日、1代表星期1、2代表星期2,其他的一次类推了) int day = d2.getDay(); 运行结果: 年份:2009 月份:6 日期:12 小时:0 //不设置默认是0 分钟:0 //不设置默认是0 秒:0 //不设置默认是0 星期:5 //09-6-12今天就是星期5,又是一个星期天哦 2、Calendar类 Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些 l Calendar类对象的创建

java中时间格式的转换

1.将日期类型转换为格式的字符串类型 java.util.Date中的日期 Date Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time=sdf.format(date); 2.将字符串类型的转换为指定格式的日期类型(java.util.Date) String time = "2009-7-29 14:28:12"; DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = df.parse(time); 这里需要抛出ParseException异常 若将java.util.Date类型转换成java.sql.Date时,只需添加一行代码 java.sql.Date sqlDate = new java.sql.Date(date.getTime()); 3.使用java.sql.Timestamp在java程序中rs.getDate()时获取日期的时、分、秒 String str = ""; String format="yyyy-MM-dd HH:mm:ss"; try { //这里与数据库的连接已经省略,获得PreparedStatement的对象psmt ResultSet rs = psmt.executeQuery(); while(rs.next()){ Timestamp ts = rs.getTimestamp("pdate"); SimpleDateFormat sdf = new SimpleDateFormat(format); str = sdf.format(ts); System.out.println(str); } } catch (SQLException e) { e.printStackTrace(); } ...... SimpleDateFormat的用法: //SimpleDateFormat中的parse方法可以 把String型的字符串转换成特定格式的date类型 import java.text.*; import java.util.*; public class TestDate { public static void main(String[] args) { String dStr = "2001.12.12-08.23.21"; Date d = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd-HH.mm.ss"); try { d = sdf.parse(dStr);

java的时间处理续计算java时间)

1. java计算时间依靠1970年1月1日开始的毫秒数. 2. date类的构造函数date()返回代表当前创建的时刻的对象。date的方法gettime()返回一个long值在数值上等于1970年1月1日之前或之后的时刻。 3. dateformat类用来转换date到string,反之亦然。静态方法getdateinstance()返回dateformat的缺省格式;getdateinstance(dateformat.field)返回指定的dateformat对象格式。format(date d)方法返回string表示日期,例如"january 1,2002."反过来,parse(string s)方法返回以参数字符串表示的date对象。 4. format()方法返回的字符串格式根据不同地区的时间设置而有所不同。 5. gregoriancalendear类有两个重要的构造函数:gregoriancalerdar(),返回代表当前创建时间的对象;gregoriancalendar(int year,int month,int date)返回代表任意日期的对象。gregoriancalendar类的gettime()方法返回日期对象。add(int field,int amount)方法通过加或减时间单位,象天数,月数或年数来计算日期。 gregoriancalendar和时间 两个gregoriancalendar的构造函数可以用来处理时间。前者创建一个表示日期,小时和分钟的对象: gregoriancalendar(int year, int month, int date, int hour, int minute) 第二个创建一个表示一个日期,小时,分钟和秒: gregoriancalendar(int year, int month, int date, int hour, int minute, int second) 首先,我应该提醒一下,每一个构造函数需要时间信息中的日期信息(年,月,日)。如果你想说2:30 p.m.,你必须指出日期。 同样,每一个gregoriancalendar构造函数创建一个在时间上使用毫秒计算的对象。所以,如果你的构造函数只提供年,月,日参数,那小时,分钟,秒和毫秒的值将被置0. dateformat和时间 你可以使用静态方法getdatetimeinstance(int datestyle,int timestyle)来建立dateformat对象来显示时间和日期。这个方法表明你想要的日期和时间格式。如果你喜欢使用缺省格式,可以使用getdatetimeinstance()来代替它。 你可以使用静态方法gettimeinstance(int timestyle)创建dateformat对象来显示正确的时间。下面的程序示范了getdatetimeinstance()和gettimeinstance()怎样工作: import java.util.*; import java.text.*; public class apollo { public static void main(string[] args) { gregoriancalendar liftoffapollo11 = new gregoriancalendar(1969, calendar.july, 16, 9, 32); date d = liftoffapollo11.gettime(); dateformat df1 = dateformat.getdatetimeinstance(dateformat.medium, dateformat.medium); dateformat df2 = dateformat.gettimeinstance(dateformat.short); string s1 = df1.format(d); string s2 = df2.format(d);

Java_各种时间格式转换大全

Java_各种时间格式转换大全/** * 字符串转换为java.util.Date
* 支持格式为yyyy.MM.dd G 'at' hh:mm:ss z 如'2002-1-1 AD at 22:10:59 PSD'
* yy/MM/dd HH:mm:ss 如'2002/1/1 17:55:00'
* yy/MM/dd HH:mm:ss pm 如'2002/1/1 17:55:00 pm'
* yy-MM-dd HH:mm:ss 如'2002-1-1 17:55:00'
* yy-MM-dd HH:mm:ss am 如'2002-1-1 17:55:00 am'
* @param time String 字符串
* @return Date 日期
*/ public static Date stringToDate(String time){ SimpleDateFormat formatter; int tempPos=time.indexOf("AD") ; time=time.trim() ; formatter = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss z"); if(tempPos>-1){ time=time.substring(0,tempPos)+ "公元"+time.substring(tempPos+"AD".length());//china formatter = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss z"); }

日期格式大全

Java中日期格式转换 /** * 字符串转换为java.util.Date
* 支持格式为 yyyy.MM.dd G 'at' hh:mm:ss z 如 '2002-1-1 AD at 22:10:59 PSD'
* yy/MM/dd HH:mm:ss 如 '2002/1/1 17:55:00'
* yy/MM/dd HH:mm:ss pm 如 '2002/1/1 17:55:00 pm'
* yy-MM-dd HH:mm:ss 如 '2002-1-1 17:55:00'
* yy-MM-dd HH:mm:ss am 如 '2002-1-1 17:55:00 am'
* @param time String 字符串
* @return Date 日期
*/ public static Date stringToDate(String time){ SimpleDateFormat formatter; int tempPos=time.indexOf("AD") ; time=time.trim() ; formatter = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss z"); if(tempPos>-1){ time=time.substring(0,tempPos)+ "公元"+time.substring(tempPos+"AD".length());//china formatter = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss z"); } tempPos=time.indexOf("-"); if(tempPos>-1&&(time.indexOf(" ")<0)){ formatter = new SimpleDateFormat ("yyyyMMddHHmmssZ"); } else if((time.indexOf("/")>-1) &&(time.indexOf(" ")>-1)){ formatter = new SimpleDateFormat ("yyyy/MM/dd HH:mm:ss"); } else if((time.indexOf("-")>-1) &&(time.indexOf(" ")>-1)){ formatter = new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); } else if((time.indexOf("/")>-1) &&(time.indexOf("am")>-1) ||(time.indexOf("pm")>-1)){ formatter = new SimpleDateFormat ("yyyy-MM-dd KK:mm:ss a"); } else if((time.indexOf("-")>-1) &&(time.indexOf("am")>-1) ||(time.indexOf("pm")>-1)){ formatter = new SimpleDateFormat ("yyyy-MM-dd KK:mm:ss a"); } ParsePosition pos = new ParsePosition(0); java.util.Date ctime = formatter.parse(time, pos); return ctime;

JAVA处理日期时间常用方法

JAVA 处理日期时间常用方法:java.util.Calendar Calendar类是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH 、DA Y_OF_MONTH 、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间1970 年1 月1 日的00:00:00.000,格里高利历)的偏移量。 例:Calendar cal = Calendar.getlnstanee。//使用默认时区和语言环境获得一个日历。 cal.add(Calendar.DAY_OF_MONTH, -1)。//取当前日期的前一天. cal.add(Calendar.DAY_OF_MONTH, +1)。//取当前日期的后一天. //通过格式化输出日期 java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd") 。 System.out.println("Today is:"+format.format(Calendar.getlnstance().getTime()))。System.out.println("yesterday is:"+format.format(cal.getTime()))。 得到2007-12-25日期: Calendar calendar = new GregorianCalendar(2007, 11, 25,0,0,0。)

Date date = calendar.getTime(。) System.out.println("2007 Christmas is:"+format.format(date))。//java 月份是从0-11,月份设置时要减1. //GregorianCalendar构造方法参数依次为:年,月-1,日,时,分,秒. 取日期的部分: int year =calendar.get(Calendar.YEAR)。 int month=calendar.get(Calendar.MONTH)+1。 int day =calendar.get(Calendar.DAY_OF_MONTH)。 int hour =calendar.get(Calendar.HOUR_OF_DAY)。 int minute =calendar.get(Calendar.MINUTE)。 int seconds =calendar.get(Calendar.SECOND。) 取月份要加1.判断当前月份的最大天数: Cale ndar cal = Cale ndar.getl nsta nee。 int day=cal.getActualMaximum(Calendar.DAY_OF_MONTH) 。System.out.println(day)。java.util.Date 类Date 表示特定的瞬间,精确到毫秒。从JDK 1.1 开始,应该使用Cale ndar类实现日期和时间字段之间转换,使用DateFormat类来格式化和分析日期字符串。Date 中的相应方法已废弃。尽管Date 类打算反映协调世界时(UTC) ,但无法做到如此准确,这取决于 Java虚拟机的主机环境。当前几乎所有操作系统都假定1天二24 x 60 X50 = 86400秒。但对于UTC,大约每一两年出现一次额外的一秒,称为“闰秒”。闰秒始终作为当天的最后一秒增加,并且始终在 12 月31 日或6 月30 日增加。例如,1995 年的最后一分钟是61

Java之时间、日期与数字

第6章时刻、日期和数字 6.1 Date类 Date a=new Date(); (1)Date类在java.util包中。使用Date类的无参数构造方法创建的对象能够猎取本地当前时刻。Date对象表示时刻的默认顺序是星期、月、日、小时、分、秒、年。 例如:Sat Apr 28 21:59:38 CST 2001 (2)我们可能希望按着某种适应来输出时刻,比如时刻的顺序:年月星期日或年月星期日小时分秒。 这时能够使用DataFormat的子类SimpleDateFormat来实现时期的格式化。SimpleDateFormat有一个常用构造方法:

public SimpleDateFormat(String pattern)。 该构造方法能够用参数pattern指定的格式创建一个对象,该对象调用 format(Date date) 方法格式化时刻对象date。需要注意的是,pattern中应当含有一些有效的字符序列。例如: ● y或yy 表示用两位数字输出年份 yyyy表示用4位数字输出年份。 ● M或MM 表示用两位数字或文本输出月份,假如想用汉字输出月份,pattern中应连续包含至少3个M,如MMM。 ● d或dd 表示用两位数字输出日。 ● H或HH 表示用两位数字输出小时。 ● m或mm 表示用两位数字输出分。 ● s或ss 表示用两位数字输出秒。 ● E 表示用字符串输出星期。在下面的例子dateformat.java中,我们用3种格式输出时刻。 (3)Java日期时刻及其格式化能够用System类的静态方法public static long currentTimeMillis()猎取系统当前时刻,那个时刻是从1970年1月1日0点到目前时刻所走过的毫秒数

Java日期格式大全

日期和时间模式 日期和时间格式由日期和时间模式字符串指定。在日期和时间模式字符串中,未加引号的字母'A'到'Z'和'a'到'z'被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号(')引起来,以免进行解释。"''"表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。 定义了以下模式字母(所有其他字符'A'到'Z'和'a'到'z'都被保留): 字 母 日期或时间元素表示示例 G Era标志符Text AD M年中的月份Month July;Jul;07 W月份中的周数Number2 d月份中的天数Number10 E星期中的天数Text Tuesday;Tue H一天中的小时数(0-23)Number0 K am/pm中的小时数 (0-11) Number0 m小时中的分钟数Number30 S毫秒数Number978 Z时区RFC822time zone -0800

示例 以下示例显示了如何在美国语言环境中解释日期和时间模式。给定的日期和时间为美国太平洋时区的本地时间2001-07-0412:08:56。 日期和时间模式结果 "yyyy.MM.dd G'at'HH:mm:ss z"2001.07.04AD at12:08:56PDT "EEE,MMM d,''yy"Wed,Jul4,'01 "h:mm a"12:08PM "hh'o''clock'a,zzzz"12o'clock PM,Pacific Daylight Time "K:mm a,z"0:08PM,PDT "yyyyy.MMMMM.dd GGG hh:mm aaa"02001.July.04AD12:08PM "EEE,d MMM yyyy HH:mm:ss Z"Wed,4Jul200112:08:56-0700 "yyMMddHHmmssZ"010*********-0700 "yyyy-MM-dd'T'HH:mm:ss.SSSZ"2001-07-04T12:08:56.235-0700 同步 日期格式是不同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须是外部同步的。

判断日期格式 ---JAVA

/** * 正则表达式验证日期格式 * @param args */ public static void main(String[] args) { String checkValue = "2007-02-29"; //String eL = "^((((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2 -9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{ 2})-0?2-(0?[1-9]|1\\d|2[0-8]))|(((1[6-9]|[2-9]\\d)(0[48]|[2468][048]|[13579][26])|((1 6|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\\d):[0-5]?\\d:[0-5]?\\d$"; String eL= "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\ \s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0 -9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([1 3579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][ 0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\ /\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))"; Pattern p = https://www.360docs.net/doc/d813082375.html,pile(eL); Matcher m = p.matcher(checkValue); boolean b = m.matches(); if(b) { System.out.println("格式正确"); } else { System.out.println("格式错误"); } }

java中的循环日期

Date/Calendar/GregorianCalendar/DateFormat/SimpleDateFormat类 1.计算某一月份的最大天数 Calendar time=Calendar.getInstance(); time.clear(); time.set(Calendar.YEAR,year); //year 为int time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0 int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数 注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间 2.Calendar和Date的转化 (1) Calendar转化为Date Calendar cal=Calendar.getInstance(); Date date=cal.getTime(); (2) Date转化为Calendar Date date=new Date(); Calendar cal=Calendar.getInstance(); cal.setTime(date); 3.把字符串转化为java.util.Date 方法一: SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); java.util.Date dt=sdf.parse("2005-2-19"); System.out.print(sdf.format(dt)); //输出结果是:2005-2-19 方法二: java.util.Date dt=null; DateFormat df=DateFormat.getDateInstance(); dt=df.parse("2005-12-19"); System.out.println(dt); //输出结果为:Mon Dec 19 00:00:00 CST 2005 System.out.println(df.format(dt)); //输出结果为:2005-2-19 4.把字符串转化为java.sql.Date

java.util.Date 与 java.sql.Date互转 及 字符串转换为日期时间格式

1、将java.util.Date 转换为java.sql.Date java.util.Date utilDate = new java.util.Date(); java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime()); 2、若要插入到数据库并且相应的字段为Date类型 可使用PreparedStatement.setDate(int ,java.sql.Date)方法 其中的java.sql.Date可以用上面的方法得到 也可以用数据库提供TO_DA TE函数 比如现有ud TO_DATE(new SimpleDateFormat().format(ud,"yyyy-MM-dd HH:mm:ss"), "YYYY-MM-DD HH24:MI:SS") 注意java中表示格式和数据库提供的格式的不同 sql="update tablename set timer=to_date('"+x+"','yyyymmddhh24miss') where ....." 这里的x为变量为类似:20080522131223 3、如何将"yyyy-mm-dd"格式的字符串转换为java.sql.Date 方法1 SimpleDateFormat bartDateFormat = new SimpleDateFormat("yyyy-MM-dd"); String dateStringToParse = "2007-7-12"; try{ java.util.Date date = bartDateFormat.parse(dateStringToParse); java.sql.Date sqlDate = new java.sql.Date(date.getTime()); System.out.println(sqlDate.getTime()); } catch (Exception ex) { System.out.println(ex.getMessage()); } 方法2 String strDate = "2002-08-09"; StringTokenizer st = new StringTokenizer(strDate, "-"); java.sql.Date date=new java.sql.Date(Integer.parseInt(st.nextToken()));

timestamp java 时间格式

1.时间格式:2008-11-2016:19:42 2.方法1: 3. 4.Timestamp d = new Timestamp(System.currentTimeMillis()); 5.Timestamp d = new Timestamp(System.currentTimeMillis()); 6.方法2: 7.Date date = new Date(); 8.Timestamp nousedate = new Timestamp(date.getTime()); 9. 10.整理一: 11.这里的一片文章,我个人认为讲解的很详细,有对 java.sql.Date的使 用还有困惑的请看。 12.java.sql.Date 只存储日期数据不存储时间数据 13.// 会丢失时间数据 14.preparedStatement.setDate(1, new java.sql.Date(date.getTime())) ; 15.//可以这样来处理 16.preparedStatement.setTimestamp(1, new java.sql.Timestamp(new ja va.util.Date().getTime())); 17.//想要得到完整的数据,包括日期和时间,可以这样 18.java.util.Date d = resultSet.getTimestamp(1); 19.//这样处理更合适一些,可以避免一些潜在Timestamp 问题 20.java.util.Date d = new java.util.Date(resultSet.getTimestamp(1) .getTime()); 21.自己补的话 22.这样的话: 23.往数据库存储的时候可以接收 java.util.Date类型再用getTime()方 法得到代表那个Date对象的long值,再以这个long值构造一个 Timestamp对象存进数据库中。 24.从存数据库里取的时候,可以先得到Timestamp用他的getTime()方法得 到long值,再以这个long值构造一个 java.util.Date对象,这样就可以对这个Date对象操作了。不如 说 new SimpleTimeFormat(“yyyyy-MM-dd HH:mm:ss”).format()等等 25.整理二: 26.用Timestamp来记录日期时间还是很方便的,但有时候显示的时候是不需 要小数位后面的毫秒的,这样就需要在转换为String时重新定义格 式。 27.Timestamp转化为 String: SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd [...]

java的时间处理(续计算java时间)

1.java计算时间依靠1970年1月1日开始的毫秒数. 2.date类的构造函数date()返回代表当前创建的时刻的对象。date的方法gettime()返回一个long值在数值上等于1970年1月1日之前或之后的时刻。 3.dateformat类用来转换date到string,反之亦然。静态方法getdateinstance()返回dateformat的缺省格式;getdateinstance(dateformat.field)返回指定的dateformat对象格式。format(dated)方法返回string表示日期,例如"january1,2002."反过来,parse(strings)方法返回以参数字符串表示的date对象。 4.format()方法返回的字符串格式根据不同地区的时间设置而有所不同。 5.gregoriancalendear类有两个重要的构造函数:gregoriancalerdar(),返回代表当前创建时间的对象;gregoriancalendar(intyear,intmonth,intdate)返回代表任意日期的对象。gregoriancalendar类的gettime()方法返回日期对象。add(intfield,intamount)方法通过加或减时间单位,象天数,月数或年数来计算日期。 两个 你必同样, 来代替它。 } } 在我的电脑上,上面的程序显示如下: jul16,19699:32:00am 9:32am (输出根据你所在得地区有所不同) 计算时间间隔 你可能有时需要计算过去的时间;例如,给你开始和结束时间,你想知道制造流程的持续时间。一个出租公司按小时或天数出租东西,计算时间对他们也很有用。同样的,在金融界,经常需要计算重要的支付时间。 将问题复杂化,人类至少是用两种方法计算时间。你可以说一天已经结束当24小时过去了,或者日历从今天翻到明天。我们将讨论我们想到的这两种情况。

JAVA字符串转日期或日期转字符串

JAVA字符串转日期或日期转字符串(转) 2010-08-16 16:34:03| 分类: |字号订阅 JAVA字符串转日期或日期转字符串(转) 文章中,用的API是SimpleDateFormat,它是属于,所以请记得import进 来! 用法: SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " ); 这一行最重要,它确立了转换的格式,yyyy是完整的公元年,MM是月份,dd是日期,至于HH:mm:ss 就不需要我再解释了吧! PS:为什么有的格式大写,有的格式小写,那是怕避免混淆,例如MM是月份,mm是分;HH是24小 时制,而hh是12小时制。 1.字符串转日期 2008-07-10 19:20:00 要把它转成日期,可以用 Date date = sdf.parse( " 2008-07-10 19:20:00 " ); 2.日期转字符串 假如把今天的日期转成字符串可用 String str = sdf.format(new Date()); 这个字符串内容的格式类似2008-07-10 19:20:00。 透过这个API我们便可以随心所欲的将日期转成我们想要的字符串格式,例如希望将日期输出成2008 年7月10日,我们可以这么写: SimpleDateFormat sdf = new SimpleDateFormat( " yyyy 年MM月dd日 " ); String str = sdf.format(new Date()); str便会依照我们设定的格式输出了。 附编写好的一个简单实例:

java.util.Date 与 java.sql.Date互转 及 字符串转换为日期时间格式

1、将java.util.Date转换为java.sql.Datejava.util.Date utilDate = new java.util.Date();java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());2、若要插入到数据库并且相应的字段为Date类型可使用 PreparedStatement.setDate(int ,java.sql.Date)方法其中的java.sql.Date可以用上面的方法得到也可以用数据库提供TO_DATE函数比如现有udTO_DATE(new SimpleDateFormat().format(ud,"yy-MM-dd HH: mm: ss"),"YY-MM-DD HH24: MI: SS")注意java中表示格式和数据库提供的格式的不同sql="update tablename set timer=to_date('"+x+"','yymmddhh24miss') where ....."这里的x为变量为类似: 、如何将"yy-mm-dd"格式的字符串转换为java.sql.Date方法1SimpleDateFormatbartDateFormat =new SimpleDateFormat("yy-MM- dd");StringdateStringToParse="2007-7- 12";try{java.util.Datedate=bartDateFormat.parse(dateStringToParse);java.sql.Datesql Date=new java.sql.Date(date.getTime());System.out.println(sqlDate.getTime());}catch (Exception ex) {System.out.println(ex.getMessage());}方法2StringstrDate="2002-08-09";StringTokenizerst=newStringTokenizer(strDate, "-");java.sql.Date date=newjava.sql.Date(Integer.parseInt(st.nextToken()));java.util.Date和 java.sql.Date的区别java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类)。 但是为什么java.sql.Date类型的值插入到数据库中Date字段中会发生数据截取呢?java.sql.Date是为了配合SQL DATE而设置的数据类型。 “规范化”的java.sql.Date只包含____年__月__日信息,时分秒毫秒都会清零。 格式类似:

时间类型DateTime的处理

数据库时间类型DateTime的处理 若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用java.sql.Date类型,若对应的是 MSsqlserver数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型 你可以使用dateFormat定义时间日期的格式,转一个字符串即可: 比如:设定字符串2002-03-22 15:22:32,调用如下方法: public class StringToDate { public final static java.sql.Timestamp string2Date(String dateString) throws https://www.360docs.net/doc/d813082375.html,ng.Exception { DateFormat dateFormat; dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH); //dateFormat = new SimpleDateFormat("yyyy.MM.dd", Locale.ENGLISH); dateFormat.setLenient(false); java.util.Date timeDate = dateFormat.parse(dateString);//util类型 //java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型 java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型 return dateTime; } } 即可得到Timestamp类型,若想得到Date类型的,将方法内的注释替换一下即可,当然进入的参数格式得为"2002-02-12" 这种模式,btw:其中的"-"符号可以为“.”,只需将dataformat的格式也改变一下即可 运行实例: package Alpha; import java.util.*; import java.text.*; public class Test { public static void main(String[] args) { try { String sToDate = "2002-3-4";//用于转换成java.sql.Date的字符串 String sToTimestamp = "2002-9-12 14:21:22";//用于转换成java.sql.Timestamp的字符串 java.sql.Date date1 = string2Date(sToDate); java.sql.Timestamp date2 = string2Time(sToTimestamp); System.out.println(date1.toString());//结果显示 System.out.println(date2.toString());//结果显示 } catch(Exception e) {} } public final static java.sql.Timestamp string2Time(String dateString) throws https://www.360docs.net/doc/d813082375.html,ng.Exception { DateFormat dateFormat; dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);//设定格式

相关文档
最新文档