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 标志符 | 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 |
为什么有的格式大写,有的格式小写,那是怕避免混淆,例如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();
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
package com.playtogether.utils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateUtils { /** * unix时间戳转换为dateFormat * * @param beginDate * @return */ public static String timestampToDate(String beginDate) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sd = sdf.format(new Date(Long.parseLong(beginDate))); return sd; } /** * 自定义格式时间戳转换 * * @param beginDate * @return */ public static String timestampToDate(String beginDate,String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); String sd = sdf.format(new Date(Long.parseLong(beginDate))); return sd; } /** * 将字符串转为时间戳 * * @param user_time * @return */ public static String dateToTimestamp(String user_time) { String re_time = null; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); Date d; try { d = sdf.parse(user_time); long l = d.getTime(); String str = String.valueOf(l); re_time = str.substring(0, 10); } catch (ParseException e) { e.printStackTrace(); } return re_time; }} |
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);
} }
Java中时间日期格式化的更多相关文章
- python中时间日期格式化符号
python中时间日期格式化符号: import time print(time.strftime('%Y%H%M%S', time.localtime())) 运行结果: 2016092308 %y ...
- java中 时间/日期 的使用方法
import java.util.*; //引入date需要的包import java.text.SimpleDateFormat;// 引入格式化需要的包import java.util. ...
- python中时间日期格式化符号:
%y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数( ...
- python中时间日期格式化符号的含义
%y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12 ...
- Java 中的日期与时间
Java 日期时间 标签 : Java基础 Date java.util.Date对象表示一个精确到毫秒的瞬间; 但由于Date从JDK1.0起就开始存在了,历史悠久,而且功能强大(既包含日期,也包含 ...
- java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)
转载地址:http://www.devba.com/index.php/archives/4581.html java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明); ...
- Java中的日期和时间
Java中的日期和时间 Java在java.util包中提供了Date类,这个类封装了当前的日期和时间. Date类支持两种构造函数.第一个构造函数初始化对象的当前日期和时间. Date() 下面的构 ...
- 【java】JDK1.8时间日期库 新特性 所有java中时间Date的使用
除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用java 8的这套API.Java对日期, ...
- (转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)
java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...
随机推荐
- Hibernate SQL优化技巧dynamic-insert="true" dynamic-update="true"
最近正在拜读Hibernate之父大作<Java Persistence with Hibernate>,颇有收获.在我们熟悉的Hibernate映射文件中也大有乾坤,很多值得我注意的地方 ...
- Xcode 历史版本
概述[编辑] Xcode前身是继承自NeXT的Project Builder. The Xcode suite包含有GNU Compiler Collection自由软件(GCC.apple-darw ...
- Promise编程基础
(一) Promise基础 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise是一个对象,从它可以获取异步操作的消 ...
- 2015年11月26日 Java基础系列(五)异常Exception
序,异常都是标准类Throwable的一些子类的对象. Throwable类的几个方法 1 getMessage() 返回描述该异常的信息 2 printStackTrace() 把消息和栈的跟踪记录 ...
- JavaScript中 window.parent 、window.top、window.self代表的含义
在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法 ...
- [Storm] 内部消息缓存
这篇文件翻译自 http://www.michael-noll.com/blog/2013/06/21/understanding-storm-internal-message-buffers/ 当进 ...
- 第六天 做的app不会改变什么
app包括资源和功能,做完之后没有改变什么
- PPPoE名词解释
PPPoE拔号的发现阶段(Discovery): PPPoE的发现阶段一共分为4步. 分别是: PADI(PPPoE Active Discovery Initiation) PADO(PPPoE A ...
- C#网络爬虫 WebUtility使用 转义字符 urlCode
背景: 在C#写网络爬虫时候,有时候需要将html中的转义字符进行处理,还有网址中的中文处理 一.html转义字符处理 1.ASP.NET中的html解析 HttpUtility.HtmlDecode ...
- Java Annotation自定义注解详解
在开发过程中总能用到注解,但是从来没有自己定义过注解.最近赋闲在家,研究整理了一番,力求知其然知其所以然. 本文会尝试描述什么是注解,以及通过一个Demo来说明如何在程序中自定义注解.Demo没有实际 ...