1. 程式人生 > >java日期操作

java日期操作

Java中的日期操作
Date :         getTime() 、setTime()

SimpleDateFormate : Formate(Date)、 parse(String s)

Calendar :      getInstance()、set() 、get()、getActualMaximum()、add()、

            gettime()、setTime(Date)、

字串、Date、Calendar之間的轉換

—————————————淫蕩分隔————————————————
Date及其常用API
Date簡介

Java中的時間使用標準類庫的java.util.Date,其表示特定的瞬間,精確到毫秒。是用距離一個固定時間點的毫秒數(可正可負,long型別)表達一個特定的時間點。
固定的時間點叫紀元(epoch),是UTC時間1970年 1月 1日 00:00:00
UTC(Universal Time Coordinated世界調整時間)與GMT(Greenwich Mean Time格林威治時間)一樣,是一種具有實際目的的科學標準時間。
因為Date的設計具有”千年蟲”以及”時區”的問題,所以Date中的大部分方法已經不建議使用了,它們都被java.util.Calendar類所取代

import java.util.Date;

/**
 * 測試Date 的getTime與setTime
 * @param args
 */
public static void main(String[] args) {
    Date date =new Date();
    System.out.println(date);
    /*
     * 計算明天此刻的時間
     */
    long time =date.getTime();
    time = time+24*60*60*1000;
    date.setTime(time);
    System.out.println(date);
}

SimpleDateFormat
SimpleDateFormat 是一個以與語言環境有關的方式來格式化和解析日期的具體類。它允許進行格式化(日期 -> 文字)、解析(文字 -> 日期)和規範化。
簡單的說,SimpleDateFormat就是根據一個特定的日期格式在字串與Date之間相互轉換。那麼這個特定的日期格式是怎樣定義的呢?下面我們來學習一下如何定義日期格式字串。

作用: 在日期格式字串與日期之間相互轉換

在日期格式字串中,出現的非關鍵字元都原意輸出

需要掌握的方法

將Date格式化為String   String format(Date d)

將String解析為Date    Date parse(String s)

字元 含義 示例
y yyyy年–》2018年
M MM月 –》 09日
d dd日 –》11日
E E –》星期日
a a–>下午(PM)
H HH日(24小時制) –》21時
h hh日(12小時制) –》11時
m mm日 –》11分
s ss日 –》11秒
/**
  * 通過SimpleDateFormate將字元轉化為date
  * @author Administrator
  *
  */
 class TestSimpleDate{
     public static void main(String[] args) throws ParseException {
        String StrD ="2015-04-20 11:22:45";
        SimpleDateFormat sdfd =new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
        Date dat =sdfd.parse(StrD);
        System.out.println(dat);
    }
 }
 ```
```java 
public class Shenri {

    /**
     * 1.獲取使用者輸入的生日
     * 2.將其轉換為Date
     * 3.建立一個Date用於表示當前系統時間
     * 4.用當前系統時間的毫秒值減去出身當天的毫秒值
     * 5,將差初一一天的毫秒值
     * 6.商就是經過的天數
     * @param args
     * @throws ParseException 
     */
    public static void main(String[] args) throws ParseException {
        Scanner scanner =new Scanner(System.in);
        System.out.println("以1992-05-08格式輸入生日:");
        String shengri=scanner.nextLine();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf.parse(shengri);
        Date now = new Date();
        long cha;
        cha= now.getTime()-date.getTime();
        System.out.println(cha);
        int day;
        day = (int) (cha/(3600*24*1000));
        System.out.println("恭喜你活了"+day+"天");
    }

}




<div class="se-preview-section-delimiter"></div>

Calendar類

java.util.Calendar 類用於封裝日曆資訊,其主要作用在於其方法可以對時間分量進行運算。
Calendar是抽象類,其具體子類針對不同國家的日曆系統,其中應用最廣泛的是GregorianCalendar(格里高裡歷,即通用的陽曆),對應世界上絕大多數國家/地區使用的標準日曆系統。

  1. getInstance()方法

Calendar是抽象類,其提供了一個工廠方法:Calendar getInstance()。該方法可以根據當前系統所在地區獲取一個適當的Calendar的子類實現。
在實際開發中,也推薦使用該方法來例項化Calendar的物件。

/**
 * Calendar 用於操作時間的類
 * 操作: 設定 獲取 計算時間
 * @author Administrator
 */
public class TestCalendar {

    public static void main(String[] args) {
    /*
     * 使用Calendar提供的靜態方法獲取適當的例項
     * 預設建立calendar表示的是當前系統的時間
     */
        Calendar calendar  = Calendar.getInstance();
        /*
         * 檢視物件具體的型別
         * obj.getClass().getName()
         */
        String className
            =calendar.getClass().getName();
        System.out.println(className);

        //輸出的是java.util.GregorianCalendar 的toString返回值
        System.out.println(calendar);
        /*
         * calendar 定義了一個方法
         * Date getTime()
         * 返回一個描述改Calendar表示的時間的Date物件
         * 
         */
            Date date =calendar.getTime();
            System.out.println(date);

    }
}




<div class="se-preview-section-delimiter"></div>
  1. 設定日期及時間分量

Calendar提供了一種通用的設定時間的方式:
void set(int field,int value)
該方法可以通過對不同的時間分量分別設定不同的值。Calendar對不同的時間分量提供了相應的常量,我們在使用set方法設定時,第一個引數就應當使用對應的常量作為時間分量。

public class TestCalendar {

    /**
     * @param args
     */
    public static void main(String[] args) {
        /*
         * 設定時間使用Calendar提供的方法
         * void set (int field,int value)
         * 對給定的時間分量設定給定的值
         * 
         * 對Calendar 設定時間為2013-12-25
         */
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR,2013);
        calendar.set(Calendar.MONTH,11);
        /*
         * 對於幾號而言 calendar 提供了兩個時間分量
         * 意義完全相同,任選其一
         * DAY_OF_MONTH
         * DATE
         */
        calendar.set(Calendar.DATE,25);
        calendar.set(Calendar.DAY_OF_MONTH, 25);

        /*
         * 超過該時間分量允許的最大值後,會向上進位
         * 日想月進位 月向年進位
         */

        calendar.set(Calendar.DATE,32);
        System.out.println(calendar.getTime());
    }

}




<div class="se-preview-section-delimiter"></div>
  1. 獲取時間分量對應的值

Calendar提供了一種通用的獲取時間分量的方式:
int get(int field)
該方法可以通過對不同的時間分量獲取相應的值。Calendar對不同的時間分量提供了相應的常量,我們在使用get方法獲取時,引數就應當使用對應的常量作為時間分量。

/**
 * 設定為2014-04-23
 * @author Administrator
 *
 */

class TestGet{

    public TestGet() {
        Calendar calendar_get= Calendar.getInstance();
        calendar_get.set(Calendar.YEAR,2014);
        calendar_get.set(Calendar.MONTH,3);
        calendar_get.set(Calendar.DATE,23);
        /*
         * 獲取今天是周幾
         * int get(int field)
         * 獲取給定的時間分量所對應的值
         * 美國人 週日為一週的第一天
         */
        System.out.println("今天是周"+(calendar_get.get(Calendar.DAY_OF_WEEK)==1?"日":calendar_get.get(Calendar.DAY_OF_WEEK)-1));
        /*
         * 獲取時間 幾點
         * HOUR            12小時
         * HOUR_OF_DAY     24小時制
         */
        System.out.println(calendar_get.get(Calendar.HOUR_OF_DAY)+"點"+ calendar_get.get(Calendar.MINUTE)+"分"+calendar_get.get(Calendar.SECOND)+"秒");
        /*
         * 檢視今年過去多少天了
         * DAY_OF_YEAR
         */
        System.out.println("已經過了"+calendar_get.get(Calendar.DAY_OF_YEAR)+"天");
    }
}




<div class="se-preview-section-delimiter"></div>
/**
 * 獲取某個時間分量所容許的最大值
 */

class TestCalendarDemo4{
    public static void main(String[] args) {
        /*
         * int
         * 獲取給定時間分量所允許的最大值
         */
        //這個月最多多少天
        Calendar calendar_max= Calendar.getInstance();

        int days =calendar_max.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println(days);

        //今年總共多少天
        days = calendar_max.getActualMaximum(Calendar.DAY_OF_YEAR);

        System.out.println(days);
    }
}




<div class="se-preview-section-delimiter"></div>
/**
 * 輸出今年每月的最後一天
 * 就是每月多少天
 * @author Administrator
 *
 */
class TestMaxmooth{
    public static void main(String[] args) {

        Calendar calendar_last = Calendar.getInstance();
        //for(int i=Calendar.JANUARY;i<=Calendar.DECEMBER;i++){}

        for(int i=0;i<12;i++){
            calendar_last.set(Calendar.MONTH,i);
            System.out.println(i+1+"月總共:"+calendar_last.getActualMaximum(Calendar.DAY_OF_MONTH));
        }
    }

}




<div class="se-preview-section-delimiter"></div>
/**
*add使用
*/

class Calendar_add{
    public static void main(String[] args) {
        Calendar calendaradd = Calendar.getInstance();

        System.out.println(calendaradd.getTime());
        /*
         * 當前日期加1
         */
        calendaradd.add(Calendar.DAY_OF_YEAR, 1);
        System.out.println(calendaradd.getTime());
        //加兩年
        calendaradd.add(Calendar.YEAR, 2);
        System.out.println(calendaradd.getTime());

        //加到32 自動切換
        calendaradd.add(Calendar.DAY_OF_YEAR, 11);
        System.out.println(calendaradd.getTime());

        //減去12小時
        calendaradd.add(Calendar.HOUR_OF_DAY, 12);
        System.out.println(calendaradd.getTime());

    }
}
字串  date 和Calendar 之間如何轉換的
/**
 * 測試Calendar 的setTime
 */
class  Testsettime{
    public static void main(String[] args) throws ParseException {
        /*
         * void setTime(Date date)
         * 使當前Calendar物件描述給定的Date物件所表示的日期
         * 
         * 輸入女朋友的今年的生日 , 
         * 輸出明年女朋友的生日是星期幾
         * 
         * 1.建立Scanner用於獲取使用者輸入的日期
         * 2.將日期通過SimpleDateFormate轉換為Date
         * 3.將date 轉換為Calendar
         * 4.將Calendar加上1年
         * 5.在通過Calendar 獲取對應的Date
         * 6.通過SimpleDateFormate輸出成目標格式
         * 
         */
        Scanner scanner = new Scanner(System.in);
        System.out.println("以2012-01-02  格式輸入女朋友的生日");
        String shengri = scanner.nextLine();
        //2
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
        作用: 將字串轉換為date
        Date date=sdf.parse(shengri);
        System.out.println(date);

        Calendar calengril= Calendar.getInstance();
        作用:將date轉換為calendar
        calengril.setTime(date);

        calengril.add(Calendar.YEAR, 1);
        calengril.get(Calendar.DAY_OF_WEEK);
        作用:將calendar 轉換為date
        date= calengril.getTime();
        作用:將date轉換為字串
        System.out.println(sdf.format(date)+"星期"+calengril.get(Calendar.DAY_OF_WEEK-1));
    }
}

相關推薦

java日期操作

Java.util.Date //java.util.Date與long轉換 Date date=new Date();//得到當前系統時間 System.out.println(date);//Thu Nov 22 19:21:12 CST 2018 long time = date.

java日期操作自定義類

每次當需要對日期進行處理的時候,總是會記不住庫、方法和格式,所以就自己簡單封裝了下;包含了大部分功能,部分不常用的沒有實現。 package com.tunicorn.marketing.utils; import java.sql.Timestamp; import j

java日期操作

Java中的日期操作 Date :         getTime() 、setTime() SimpleDateFormate : Formate(Date)、 parse(String s) Calendar :      getInstance(

Java日期操作常用方法

    /**     * 取得指定月份的第一天     *     * @param strdate String     * @return String     */    public String getMonthBegin(String strdate)    {

java日期操作【持續更新中……】

1、得到系統當前時間:java.util.Date dt=new java.util.Date();System.out.print(dt);  //輸出結果是:Wed Aug 10 11:29:11 CST 2005SimpleDateFormat sdf=new SimpleDateFormat("yy

Java 日期操作月份加一

package com.chni.device.util; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import ja

java日期操作util工具包

package jdbc.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;

Java經常使用日期操作具體解釋

data exc 用法 div pen mod code 日歷 pri Date類型大多數時間分量計算方法已經被Calendar代替 Date經常用法setTime getTime() new Date();默認獲取當前的時間 SimpleDate

java 日期操作彙總

import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java

Java基礎練習題 (2)日期操作

(1)如何獲取當前的月份? 操作日期我們通常會使用到兩個類,一個是 Date 類,一個是 Calendar 類。Date 類的很多方法都已被標記為 Deprecated,所以建議使用 Calendar 替代 Date 類來獲取時間資訊。因為 Calendar

java實現計算兩個日期相差多少月、比較兩個日期大小 等常用日期操作

import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.u

java常用日期操作方法

package com.wujiangpo.test.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; im

Java 日期時間操作【SimpleDateFormat】

日期和時間格式由 日期和時間模式字串 指定。在 日期和時間模式字串 中,未加引號的字母 ‘A’ 到 ‘Z’ 和 ‘a’ 到 ‘z’ 被解釋為模式字母,用來表示日期或時間字串元素。文字可以使用單引號 (’) 引起來,以免進行解釋。所有其他字元均不解釋;只是在格式化時將它們簡單複製到輸出

Java中常用日期操作及方法

第一周 當前 計算 sys print border str2 入門教程 註意 前言 涉及到日期計算和字符串與日期轉換,轉來轉去很是麻煩,於是歸納總結一下。以下都可以用。 一、Dateformat類的常用格式 y 年 Year 1996; 96 M 年中的月份

Java日期時間操作源碼示例大全

tint etime cas int format) tostring exc gets substr 在研發閑暇時間,將開發過程比較重要的一些代碼段做個記錄,如下代碼內容是關於Java日期時間操作示例大全的代碼,應該是對小夥伴們有所用途。 日期類 import java.

關於日期操作,C#中如何使指定日期加一,java等語言應該是通用。

C#,java等裡內建的DateTime基本上都可以實現這些功能,巧用DateTime會使你處理這些事來變輕鬆多了今天DateTime.Now.Date.ToShortDateString();昨天,就是今天的日期減一DateTime.Now.AddDays(-1).ToSh

Java 日期的各種操作

在Java中,操作日期主要涉及到一下幾個類: 1、java.util.Date         類 Date 表示特定的瞬間,精確到毫秒。從 JDK 1.1 開始,應該使用 Calendar 類實現日期和時間欄位之間轉換,使用 DateFormat 類來格式化和分析日期字串。Date 中的把日期解釋為

JAVA SE篇--03 日期操作

1.Date類及其常用方法    java.util.Date類用於封裝日期及時間資訊。Date類的大多數用於進行時間分量計算的方法以已經被Calendar取代。//無參的構造方法,構造的Date物件封裝當前的日期及時間資訊。 Date date=new Date(); //

java之正則表示式、日期操作

正則表示式和日期操作 正則表示式簡介   正則表示式就是使用一系列預定義的特殊字元來描述一個字串的格式規則,然後使用該格式規則匹配某個字串是否符合格式要求。   作用:比如註冊郵箱,郵箱有使用者名稱和密碼,一般會對其限制長度,這個限制長度的事情就是正則表示

MYSQL常用日期操作

距離 rda user rdate bsp nth 當前 core tween mysql查詢今天、昨天、7天、近30天、本月、上一月 數據 今天 select * from 表名 where to_days(時間字段名) = to_days(now()); 昨天