java如何创建一个指定的日期对象?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何创建一个指定的日期对象?相关的知识,希望对你有一定的参考价值。
第一个问题:这有好几种做法都可以实现:
1.new一个java.util.Date对象,调用它的setYear、setMonth等等方法,设置你要的年月日。不过这种做法不推荐,因为setYear等方法已经过时了。
2.new一个java.util.SimpleDateFormat类的实例,构造方法可以指定日期格式,例如yyyy-MM-dd,其中yyyy表示四位年份,MM表示两位月份,dd表示两位日期。然后通过调用这个SimpleDateFormat实例的parse方法可以解析获得指定日期的Date对象。
代码示例:
SimpleDateFormat
sdf
=
new
SimpleDateFormat("yyyy-MM-dd");
Date
d
=
sdf.parse("2014-03-02");
3.通过java.util.Calendar类的静态方法getInstance()获得一个日历类实例,然后调用此实例的set(int
year,
int
month,
int
date)
设置日历字段
YEAR、MONTH
和
DAY_OF_MONTH
的值,然后调用实例的getTime()方法可以获得指定日期的Date对象
第二个问题:
参考上一个问题的第3种做法,Calendar.getInstance()获得的是当前时刻的日历实例对象,调用此实例对象的setLenient(false)设置日历解释为宽松模式,然后再通过roll(int
field,
boolean
up)方法在给定的时间字段上添加或减去(上/下)单个时间单元(例如你要的“一个月”时间单月),最后通过getTime()方法获得Date对象。
这两个问题都是很简单的,你找份JDK
API文档看看就可以找到办法了,自己多看多想会更好。 参考技术A import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo
public static void main(String[] args) throws ParseException
//获得2009年06月01日 的Date对象
DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
Date myDate1 = dateFormat1.parse("2009-06-01");
System.out.println(myDate1);
//获得2010年9月13日22点36分01秒 的Date对象
DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date myDate2 = dateFormat2.parse("2010-09-13 22:36:01");
System.out.println(myDate2);
Java日期和时间
java.util包提供了Date类来封装当前的日期和时间,Date类提供两个构造函数聊实例化Date对象。
Date()//使用当前日期和时间来初始化对象; Date(long millisec)//接收一个参数,该参数是从1970年1月1日起的毫秒数;
创建Date对象后,可调用以下方法:
序号 | 方法和描述 |
1 |
boolean after(Date date) 若当调用此方法的Date对象在指定日期之后返回true,否则返回false |
2 |
boolean before(Date date)
|
3 |
Object clone() 返回此对象的副本 |
4 |
int compareTo(Date date) 比较当调用此方法的Date对象和指定日期,两者相等时候反复0.调用对象在指定日期之前返回负数,在之后返回正数。 |
5 |
int compareTo(Object object) 若object是Date类型则操作同等于compareTo(Date date),否则抛出ClassCastException |
6 |
boolean equals(Object object) 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false |
7 |
long getTime() 返回自1970年1月1日 00:00:00GMT以来此Date对象表示的毫秒数 |
8 |
int hashTime() 返回此对象的哈希码值 |
9 |
void setTime(long time) 用自1970年1月1日 00:00:00GMT以后time毫秒数设置日期和时间 |
10 |
String toString() 把此Date对象转换为以下形式的String:dow mon dd hh:mm:ss zzz yyyy其中dow是一周中的某天(Sun,Mon,Tue,Wed,Thu,Fri,Sat) |
获取当前日期时间
import java.util.Date; public class DateDemo public static void main(String args[]) Date date = new Date();//初始化Date对象 System.out.println(date.toString());//使用toString()函数显示日期时间
运行结果
Tue Sep 03 22:49:12 CDT 2019
——————————————————————————
日期比较(三种方法)
1.getTime()方法获取两个日期,然后比较两个日期的值;
2.before(),after(),equals();例如:一个月的12号比18号早,则new Date(99,2,12).before(new Date(99,2,18))返回true;
3.compreTo()方法,由Comparable接口定义的,Date类实现了这个接口;
——————————————————————————————————————
使用SimpleDateFormat格式化日期
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类,SimpleDateFormat允许你选择任何用户自定义日期时间来运行,例如:
import java.util.*; import java.text.*; public class DateDemo public static void main(String args[]) Date nowDate = new Date(); SimpleDateFormat ft =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
//确立转换格式 System.out.println(ft.format(nowDate));
运行结果
2019-09-03 23:11:51
——————————————————————
使用print格式化日期
以%t开头以字母(以下的字母)结尾
转换符 | 说明 | 事例 |
c | 包括全部日期和时间信息 | 星期二 九月 03 23:23:12 CST 2019 |
F | "年-月-日"格式 | 2019-09-05 |
D | “月/日/年”格式 | 10/23/05 |
r | “HH:MM:SS PM”格式,12小时 | 05:25:51 下午 |
T | “HH:MM:SS”格式,24小时 | 05:25:51 |
R | "HH:MM"格式,24小时 | 05:25 |
事例:
import java.util.Date; public class DateDemo public static void main(String args[]) Date date =new Date(); System.out.println("HH:MM:SS格式:%tT%n",date);
运行结果
HH:MM:SS格式:23:20:12
另外:
重复提供日期 ,可以利用一个格式化字符串之处要被格式化的参数索引
索引跟在%后面,而且必须以$结束("%1$d",...)
或者,使用<标志,表示先前被格式化的参数再次被使用("%s %<te",...)
_________________________________
解析字符串为时间
SimpleDateFormat类的parse()方法
import java.util.*; import java.text.*; public class DateDemo public static void main(String args[]) SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); String input = "1818-11-11"; System.out.println(input); Date t; try t = ft.parse(input); System.out.println(t); catch(ParseException e) System.out.println(ft);
运行结果
1818-11-11
Wed Nov 11 00:00:00 UTC 1818
——————————————————————————
休眠:sleep()使当前线程进入停滞状态,,让出CPU的使用、目的是不让当前线程独自霸占该进程所获得的CPU资源,留一定时间给其他线程执行机会。
休眠3秒:
import java.util.*; public class SleepDemo public static void main(String args[]) try System.out.println(new Date()+"\n"); Thread.sleep(1000*3);//休眠三秒 System.out.println(new Date()+"\n"); catch(Exception e) System.out.println("zzz");
运行结果
Thu Sep 17 02:44:50 UTC 2015
Thu Sep 17 02:44:53 UTC 2015
————————————————————————————————
测量时间间隔(单位:毫秒)
import java.utill.*; public class Demo 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(diff); catch(Exception e) System.out.println("……");
运行结果
Thu Sep 17 02:43:18 UTC 2015
Thu Sep 17 02:43:21 UTC 2015
3031
——————————————————————
Calendar类
抽象类,比Date类的功能要强大
Calendar a = Calendar.getInstance();//创建一个Calendar对象,默认当前系统日期
Calendar a = Calendar.getInstance(); a.set(2019,9-1,18);//创建一个指定日期(2019年9月18日)的Calendar对象,
量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份 |
Calendar.DATE | 日期 |
Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |
Calendar.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期几 |
Calendar类对象信息的设置
set设置
1.Calendar c = Calendar.getInstance();
2.public final void set(int year,int month,int date)
3.c.set(2019,9,18)
add设置
1.Calendar c = Calendar.getInstance();
2.c.add(Calendar.DATE,10);//c对象的日期加上10,c表示为10天后的日期,其他只也会重新计算
GregorianCalendar类
Calendar类实现公历日历,GregorianCalendar类是Calendar类的一个具体实现。
以上是关于java如何创建一个指定的日期对象?的主要内容,如果未能解决你的问题,请参考以下文章