日期操作

Java中的时间

· Java中的时间使用标准类库的Date类表示,是用距离一个固定时间点的毫秒数(可正可负,long类型)表达一个特定的时间点;

· 固定的时间点叫纪元(epoch),是UTC时间1970年1月1日 00:00:00;

 · UTC(Universal Time Coordinated世界调整时间)与GMT(Greenwich Mean Time格林威治时间)一样,是一种具有实际目的的科学标准时间。

在java中获取当前时间,可以使用java.util.Data类和java.util.Calendar类完成。其中,Date类主要封装了系统的日期和时间的信息,Calendar类则会根据系统的日历来解释Date对象。

Date类

Date类表示系统特定的时间戳,可以精确到毫秒。Date对象表示时间的默认顺序是星期、月、日、小时、分、秒、年。

 Date类中的常用方法
方法 描述
boolean after(Date when) 判断此日期是否在指定日期之后
boolean before(Date when) 判断此日期是否在指定日期之前
int compareTo(Date anotherDate) 比较两个日期的顺序
boolean equals(Object obj) 比较两个日期的相等性
long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来,此 Date 对象表示的毫秒数
String toString() 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy。
其中 dow 是一周中的某一天(Sun、Mon、Tue、Wed、Thu、Fri 及 Sat)

Date类的大多数用于进行时间分量计算的方法已经被Calendar取代。

Calendar类

Calendar类是一个抽象类,它为特定瞬间与YEAR、MONTH、DAY_OF——MONTH、HOUR等日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。

创建Calendar对象不能使用new关键字,因为Calendar类是一个抽象类,但是它提供了一个getinstance()方法来获得Calendar类的对象。

 Calendar类的常用方法
方法 描述
void add(int field, int amount) 根据日历的规则,为给定的日历字段 field 添加或减去指定的时间量 amount
boolean after(Object when) 判断此 Calendar 表示的时间是否在指定时间 when 之后,并返回判断结果
boolean before(Object when) 判断此 Calendar 表示的时间是否在指定时间 when 之前,并返回判断结果
void clear() 清空 Calendar 中的日期时间值
int compareTo(Calendar anotherCalendar) 比较两个 Calendar 对象表示的时间值(从格林威治时间 1970 年 01 月 01 日
00 时 00 分 00 秒至现在的毫秒偏移量),大则返回 1,小则返回 -1,相等返回 0
int get(int field) 返回指定日历字段的值
int getActualMaximum(int field) 返回指定日历字段可能拥有的最大值
int getActualMinimum(int field) 返回指定日历字段可能拥有的最小值
int getFirstDayOfWeek() 获取一星期的第一天。根据不同的国家地区,返回不同的值
static Calendar getInstance() 使用默认时区和语言坏境获得一个日历
static Calendar getInstance(TimeZone zone) 使用指定时区和默认语言环境获得一个日历
static Calendar getInstance(TimeZone zone,
Locale aLocale)
使用指定时区和语言环境获得一个日历
Date getTime() 返回一个表示此 Calendar 时间值(从格林威治时间 1970 年 01 月 01 日 00 时
00 分 00 秒至现在的毫秒偏移量)的 Date 对象
long getTimeInMillis() 返回此 Calendar 的时间值,以毫秒为单位
void set(int field, int value) 为指定的日历字段设置给定值
void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
void set(int year, int month, int date, int hourOfDay,
int minute, int second)
设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、 MINUTE 和 SECOND 的值
void setFirstDayOfWeek(int value) 设置一星期的第一天是哪一天
void setTimeInMillis(long millis) 用给定的 long 值设置此 Calendar 的当前时间值

Calendar对象可以调用set()方法将日历翻倒任何一个时间,当参数year取负数时表示公元前。Calendar对象调用get()方法可以获取有关年、月、日等时间信息。

 java.util.Calendar类用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算;

· Calendar是抽象类,其具体子类针对不同国家的日历系统,其中应用最广泛的是GregorianCalendar(格里高里历,即通用的阳历),对应世界上绝大多数国家/地区使用的标准日历系统。

getInstance方法

· Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象

· Calendar的getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化

Calendar c=Calendar.getInstance();

设置日期及时间分量

获取日期及时间分量

    · 使用Calendar提供的get方法及一些常量可以获取日期及时间分量

· static int YEAR 提示年份的字段数字

· static int MONTH 指示月份的字段数字

· static int DATE 指示一个月份中的第几天

· static int DAY_OF_WEEK 指示一个星期中的某天,1为星期天

getActualMaximum方法

· int getActualMaximum(int field)给定此Calendar的时间值,返回指定日历字段可能拥有的最大值。

dd方法

· void add(int filed,int mount)为给定的时间分量的值加上给定的值,若给定的值为负数则是减去给定的值

setTime与getTime方法

· Date getTime()

使用Date描述Calendar表示的日期并返回

· void setTime(Date d)

使Calendar表示Date所描述的日期

实例:

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar; //Calendar 类
public class Six {
public static void main(String[] args) {
// testGetInsrance();
// testGet();
// testgetActualMaximum();
// testAdd();
testsetTimeAndGetTime();
}
// 设置日期及时间分量 GetInsrance()
static void testGetInsrance() {
Calendar c=Calendar.getInstance();
c.set(c.YEAR, 2019);
c.set(c.MONTH, c.DECEMBER);
c.set(c.DATE, 25);
System.out.println(c.getTime());
c.set(c.DATE, 32);
System.out.println(c.getTime());
}
//获取日期及时间分量
static void testGet() {
Calendar c=Calendar.getInstance();
c.set(c.YEAR, 2019);
c.set(c.MONTH, c.DECEMBER);
c.set(c.DATE, 25);
int dayweek=c.get(c.DAY_OF_WEEK);
System.out.println(c.getTime());
System.out.println(dayweek);
}
//获取年份的最大值getActualMaximum方法
static void testgetActualMaximum() {
int year=2019;
Calendar c=Calendar.getInstance();
c.set(c.YEAR, year); c.set(c.DATE, 1);
for(int month=c.JANUARY;month<=c.DECEMBER;month++){
c.set(c.MONTH, month);
System.out.println(year+"n"+(month+1)+"y"+c.getActualMaximum(c.DATE)+"r");
}
}
//分量的值加减
static void testAdd() {
Calendar c=Calendar.getInstance();
c.add(c.YEAR, 1);
c.add(c.MONTH, -3);
System.out.println(c.get(c.YEAR));
}
// setTime与getTime方法
static void testsetTimeAndGetTime() {
Calendar c=Calendar.getInstance();
Date d=new Date();
c.setTime(d);
d=c.getTime();
System.out.print(c.getTime());
}
}

DateFormat 类

DateFormat是日期、时间格式化子类的抽象类,它以与语言无关的方法格式化并解析日期或时间。

在创建DateFormat对象时不能使用new关键字,而使用DateFormat类中的静态方法getDateInstance().

ateFormat类的常用方法
方法 描述
String format(Date date) 将 Date 格式化日期/时间字符串
Calendar getCalendar() 获取与此日期/时间格式相关联的日历
static DateFormat getDateInstance() 获取具有默认格式化风格和默认语言环境的日期格式
static DateFormat getDateInstance(int style) 获取具有指定格式化风格和默认语言环境的日期格式
static DateFormat getDateInstance(int style,
Locale locale)
获取具有指定格式化风格和指定语言环境的日期格式
static DateFormat getDateTimeInstance() 获取具有默认格式化风格和默认语言环境的日期/时间
格式
static DateFormat getDateTimeInstance(int
dateStyle,int timeStyle)
获取具有指定日期/时间格式化风格和默认语言环境的
日期/时间格式
static DateFormat getDateTimeInstance(int
dateStyle,int timeStyle,Locale locale)
获取具有指定日期/时间格式化风格和指定语言环境的
日期/时间格式
static DateFormat getTimeInstance() 获取具有默认格式化风格和默认语言环境的时间格式
static DateFormat getTimeInstance(int style) 获取具有指定格式化风格和默认语言环境的时间格式
static DateFormat getTimeInstance(int style,
Locale locale)
获取具有指定格式化风格和指定语言环境的时间格式
void setCalendar(Calendar newCalendar) 为此格式设置日历
Date parse(String source) 将给定的字符串解析成日期/时间

SimpleDateFormat 类

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

 构造方法

SimpleDateFormat()

SimpleDateFormat(String pattern)用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat

· 方法

final String format(Date date)  Date=>String

Date parse(String source) throws ParseException  String=>Date

日期/时间格式中的字母及其含义与示例
字母 含义 示例
y 年份。一般用 yy 表示两位年份,yyyy 表示 4 位年份 使用 yy 表示的年扮,如 11;
使用 yyyy 表示的年份,如 2011
M 月份。一般用 MM 表示月份,如果使用 MMM,则会
根据语言环境显示不同语言的月份
使用 MM 表示的月份,如 05;
使用 MMM 表示月份,在 Locale.CHINA
语言环境下,如“十月”;在 Locale.US
语言环境下,如 Oct
d 月份中的天数。一般用 dd 表示天数 使用 dd 表示的天数,如 10
D 年份中的天数。表示当天是当年的第几天, 用 D 表示 使用 D 表示的年份中的天数,如 295
E 星期几。用 E 表示,会根据语言环境的不同, 显示不
同语言的星期几
使用 E 表示星期几,在 Locale.CHINA 语
言环境下,如“星期四”;在 Locale.US 语
言环境下,如 Thu
H 一天中的小时数(0~23)。一般用 HH 表示小时数 使用 HH 表示的小时数,如 18
h 一天中的小时数(1~12)。一般使用hh表 示小时数 使用 hh 表示的小时数,如 10 (注意 10 有
可能是 10 点,也可能是 22 点)
m 分钟数。一般使用 mm 表示分钟数 使用 mm 表示的分钟数,如 29
s 秒数。一般使用 ss 表示秒数 使用 ss 表示的秒数,如 38
S 毫秒数。一般使用 SSS 表示毫秒数 使用 SSS 表示的毫秒数,如 156

日期转String

format方法

语法:

   SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date=new Date();
String dateStr=sdf.format(date);

String转日期

parse方法

语法:

  String str="2013-12-25";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date=sdf.parse(str);

实例:

//SimpleDateFormat类格式化
public static void main(String[] args) {
SimpleDateFormat2();
System.out.println();
SimpleDateFormat1();
}
//字符串转日期
static void SimpleDateFormat2() {
SimpleDateFormat sdf =new SimpleDateFormat("y-MM-dd HH:mm:ss" );
String str = "2020-1-5 12:14:54";
try {
Date d = sdf.parse(str);
// 字符串通过格式 yyyy/MM/dd HH:mm:ss 转换为日期
System.out.printf(str,d.toString());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//日期转字符串
static void SimpleDateFormat1() {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd HH:mm:ss SSS");
Date d=new Date();
String sr=sdf.format(d);
//当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出
System.out.println(sr);
SimpleDateFormat sdf1=new SimpleDateFormat("yyyy-MM-dd");
Date d2=new Date();
String d3=sdf1.format(d2);
// 当前时间通过 yyyy-MM-dd 格式化后的输出
System.out.println(d3);
}

Day03:日期操作 / 集合框架(上)的更多相关文章

  1. Java 之集合框架 上(9)

    Java 中的集合框架 如果一个类中存在很多相同类型的属性. 例如:学生类 学生可以选课,因此存在很多课程类型的属性.但是每个学生选择的课程的种类和数量是不一样的. 如果将每一个课程类型的属性都列到课 ...

  2. mooc_java 集合框架上 学生所选课程

    用一个集合Set存放学生所选课程接口不能实例化,所以用其实现类进行实例化 set接口不能实例化,通过HashSet这个实现类来进行实例化,需要导入包this.courses=new HashSet() ...

  3. 十五、Java基础---------集合框架体系以及List

    在介绍集合之前先说一下数组,正如我们所知,数组是某一类型数据的集合,强调的是数据,而且必须单一:集合框架的不同之处在于存储的数据类型没有任何限制,既可以存储基本数据类型(会自动提升为相应的包装类)也可 ...

  4. java基础--集合框架的认识

    一.集合框架 对于不知道存储数量和更复杂的方式存储对象用集合框架. 其中有几个常用的接口和实现类:Collection父接口.List接口,Set接口,Map接口, ArrayList实现类.Link ...

  5. JAVASE02-Unit03: 日期操作 、 集合框架

    Unit03: 日期操作 . 集合框架 java.util.Date package day03; import java.util.Date; /** * java.util.Date * Date ...

  6. (1)StringBuilder类和StringBuffer类 (2)日期相关的类 (3)集合框架 (4)List集合

    1.StringBuilder类和StringBuffer类(查手册会用即可)1.1 基本概念 由于String类描述的字符串内容无法更改,若程序中出现大量类似的字符串时需要申请独立的内存空间单独保存 ...

  7. JAVASE02-Unit04: 集合框架 、 集合操作 —— 线性表

    Unit04: 集合框架 . 集合操作 -- 线性表 操作集合元素相关方法 package day04; import java.util.ArrayList; import java.util.Co ...

  8. JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue

    前言:俗话说“金三银四铜五”,不知道我要在这段时间找工作会不会很艰难.不管了,工作三年之后就当给自己放个暑假. 面试当中Collection(集合)是基础重点.我在网上看了几篇讲Collection的 ...

  9. 浅入深出之Java集合框架(上)

    Java中的集合框架(上) 由于Java中的集合框架的内容比较多,在这里分为三个部分介绍Java的集合框架,内容是从浅到深,如果已经有java基础的小伙伴可以直接跳到<浅入深出之Java集合框架 ...

随机推荐

  1. 第七章 路由 82 名称案例-使用keyup事件实现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  2. spark streaming基本概念一

    在学习spark streaming时,建议先学习和掌握RDD.spark streaming无非是针对流式数据处理这个场景,在RDD基础上做了一层封装,简化流式数据处理过程. spark strea ...

  3. logback和log4j比较,前者是后者改良,logback配置详解(转)

    一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分为下面下个模块: logback-core:其它两 ...

  4. sqoop参数详解

    从RDBMS到HIVE: sqoop import --connect jdbc:oracle:thin:@//192.168.156.111/test--username test --passwo ...

  5. CSS的水平居中和垂直居中

    水平居中如果不太熟悉盒子模型的话属实不太好理解,其实就是控制其他属性来让border之内的内容被控制在父容器中间就行了,最经典的就是使用{margin: 0  auto}了,控制其上下外边框为0,左右 ...

  6. Comet OJ - Contest #10 鱼跃龙门 exgcd+推导

    考试的时候推出来了,但是忘了 $exgcd$ 咋求,成功爆蛋~ 这里给出一个求最小正整数解的模板: ll solve(ll A,ll B,ll C) { ll x,y,g,b,ans; gcd = e ...

  7. Confluence 6 删除一个附加的文件

    你需要具有 删除附件(Delete Attachment)的空间权限来删除一个附加的文件. 希望删除一个附加文件的所有版本: 进入含有附件的页面中. Go to  > Attachments 选 ...

  8. 【WebStorm】前端工具开发利器webstrom专篇

    ---------------------------------------------------------------------------------[亲身实测] WebStorm混搭sv ...

  9. Access denied for user 'ODBC'@'localhost' (using password: NO) 的解决方法

    在部署公司的web项目到myeclipse时遇到的一个错误:Access denied for user 'ODBC'@'localhost' (using password: NO),貌似是mysq ...

  10. spring自定义自动配置注解

    我们知道springboot自动配置@EnableAutoConfiguration是通过@Import(AutoConfigurationImportSelector.class)来把自动配置组件加 ...