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)


若当调用此方法的Date对象在指定日期之前返回true,否则返回false

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如何创建一个指定的日期对象?的主要内容,如果未能解决你的问题,请参考以下文章

创建指定日期java Date对象

Java日期和时间

JAVA中关于日期的最常见的操作

在JSP中如何获得当前日期(急)!!!

Java语言进阶篇基本概念

时间日期类