java格式化日期时分秒_Java中时间日期格式化

1、与日期时间相关的类:

第一:java.util.Date;                           将时间作为一个整体使用、处理时,使用Date类较为简便

第二:java.util.Calender;                     要处理时间的一部分,如月、分时,使用Calendar类较为简便

第三:java.text.DateFormat                抽象类,是SimpleDateFormate的父类

第四:java.text.SimpleDateFormate    时间日期转换时,用的最多的类

2、日期和时间模式

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

在日期和时间模式字符串中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。"''" 表示单引号。

所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。

定义了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留):

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

G

Era 标志符

AD

y

1996; 96

M

年中的月份

July; Jul; 07

w

年中的周数

27

W

月份中的周数

2

D

年中的天数

189

d

月份中的天数

10

F

月份中的星期

2

E

星期中的天数

Tuesday; Tue

a

Am/pm 标记

PM

H

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

0

k

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

24

K

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

0

h

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

12

m

小时中的分钟数

30

s

分钟中的秒数

55

S

毫秒数

978

z

时区

Pacific Standard Time; PST; GMT-08:00

为什么有的格式大写,有的格式小写,那是怕避免混淆,例如MM是月份,mm是分;HH是24小时制,而hh是12小时制

3、格式转换

DateFormat类中的两个方法:

public Date parse(String source) throws ParseException

A.parse(B)  :将字符串B按照A的形式解析成Date              A是DateFormat或者其子类的实例

public final String format(Date date)

A.format(B):将一个 Date类型的B格式化为A格式的字符串      A是DateFormat或者其子类的实例

实例:         将  2008-10-19 10:11:30.345   转化为   2008年10月19日 10时11分30秒345毫秒

步骤:2008-10-19 10:11:30.345  -- parse --> date --format--> 2008年10月19日 10时11分30秒345毫秒

public static void main(String args[]){

String strDate = "2008-10-19 10:11:30.345" ;

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") ;  // 实例化模板对象

SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒SSS毫秒") ;

Date d = null ;

try{

d = sdf1.parse(strDate) ;                                                                                 // 将给定的字符串中解析成日期

System.out.println(d);                                                                                    //Sun Oct 19 10:11:30 CST 2008

}catch(Exception e){

e.printStackTrace() ;

}

System.out.println(sdf2.format(d)) ;                        // 将日期格式化为字符串   2008年10月19日 10时11分30秒345毫秒

}

4、日期比较、加减

Date类中的两个方法:

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

public void setTime(long time) 设置此Date对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后time毫秒的时间点。

实例: 求出sourceTime,过minuteNumber分钟后的时间

public static String getPreTime(String sourceTime, String minuteNumber) {

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String mydate1 = "";

try {

Date date1 = format.parse(sourceTime);

long Time = (date1.getTime() / 1000) + Integer.parseInt(minuteNumber) * 60;

date1.setTime(Time * 1000);

mydate1 = format.format(date1);

} catch (Exception e) { }

return mydate1;

}

5、时间戳:某个时间点的时间戳就是:该时间点距1970 年 1 月 1 日 00:00:00相差的毫秒数

获得当前时间的时间戳:new Date().getTime();  System.currentTimeMillis();

package com.my.base.study;

import java.text.DateFormat;

import java.util.Calendar;

import java.util.Date;

/**

* Created by chengtao on 17/12/16.

*/

public class TimeStudy {

public static void main(String[] args) {

getTimeByDate();

System.out.println("****************************");

getTimeByCalendar();

System.out.println("****************************");

addSub();

System.out.println("****************************");

change();

}

public static void getTimeByDate(){

Date date = new Date();

DateFormat df1 = DateFormat.getDateInstance();//日期格式,精确到日

System.out.println(df1.format(date));

DateFormat df2 = DateFormat.getDateTimeInstance();//可以精确到时分秒

System.out.println(df2.format(date));

DateFormat df3 = DateFormat.getTimeInstance();//只显示出时分秒

System.out.println(df3.format(date));

DateFormat df4 = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL); //显示日期,周,上下午,时间(精确到秒)

System.out.println(df4.format(date));

DateFormat df5 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); //显示日期,上下午,时间(精确到秒)

System.out.println(df5.format(date));

DateFormat df6 = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT); //显示日期,上下午,时间(精确到分)

System.out.println(df6.format(date));

DateFormat df7 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM); //显示日期,时间(精确到分)

System.out.println(df7.format(date));

}

public static void getTimeByCalendar(){

Calendar cal = Calendar.getInstance();

int year = cal.get(Calendar.YEAR);//获取年份

int month=cal.get(Calendar.MONTH) +1;//获取月份

int day=cal.get(Calendar.DATE);//获取日

int hour=cal.get(Calendar.HOUR);//小时

int minute=cal.get(Calendar.MINUTE);//分

int second=cal.get(Calendar.SECOND);//秒

int WeekOfYear = cal.get(Calendar.DAY_OF_WEEK);//一周的第几天

System.out.println("现在的时间是:公元"+year+"年"+month+"月"+day+"日 "+hour+"时"+minute+"分"+second+"秒 星期"+WeekOfYear);

Calendar cal1 = Calendar.getInstance();

cal1.set(year,month,day,0,0,0);

System.out.println("date = " + cal1.getTime());

}

public static void addSub (){

Calendar c = Calendar.getInstance();

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

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

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

System.out.println("今天是"+year+"年"+month+"月"+date+"日");

System.out.println("是今年的第"+c.get(Calendar.DAY_OF_YEAR)+"天");

System.out.println("c.getTime()的結果: "+c.getTime());

System.out.println("new Date()的結果: "+new Date());

c.add(Calendar.DATE, 30);//增加一天

System.out.println("30天后是"+c.getTime());

c.add(Calendar.DATE, -30);//增加一天

System.out.println("30天前是"+c.getTime());

c.add(Calendar.MONTH, 1);//增加一月

System.out.println("一个月后是"+c.getTime());

}

public static void change(){

// (1) Calendar转化为Date()

Calendar cal1=Calendar.getInstance();

Date date1=cal1.getTime();

System.out.println( "Calendar转化为Date -- " +date1);

// (2) Date转化为Calendar

Date date=new Date();

Calendar cal=Calendar.getInstance();

cal.setTime(date);

System.out.println( "Date转化为Calendar -- " +cal);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值