日期java,日期java進行計算

本文目錄一覽:

java日期類型

在java中,代表時間和日期的類型包括:java.util.Date和java.util.Calendar,此外,在JDBC API中還提供了3個擴展類,java.UtilDate類的子類:java.sql.Date,java.sql.Time,和java.sql.Timestamp,這三個類分別和標準SQL類型中的DATE,TIME,TIMESTAMP類型對應

在標準的SQL中,DATE類型表示日期,TIME類型表示時間,TIMESTAMP類型表示時間戳,同時包含日期和時間信息

因為java.util.Date是java.sql.Date,java.sql.Time,和java.sql.Timestamp的父類,所以java.util.Date可以對應標準SQL中的DATE,TIME,TIMESTAMP類型

所以在設置持久化類的類型是設置為java.util.Date

java三個int表示日期

public static void main(String[] args) {

Scanner scanner = new Scanner(System.in);

System.out.print(“請輸入年份:”);

int year = scanner.nextInt();

System.out.print(“請輸入月份:”);

int month = scanner.nextInt();

System.out.print(“請輸入幾號:”);

int day = scanner.nextInt();

Calendar c =Calendar.getInstance();

c.set(year, month – 1, day);

Date date = c.getTime();

Date currDate = new Date();

SimpleDateFormat fmt = new SimpleDateFormat(“yyyy年MM月dd曰”);

System.out.println(“輸入的日期為:”+fmt.format(date));

System.out.println(“當前日期為:”+fmt.format(currDate));

if(date.after(currDate)){

System.out.println(“輸入的日期比當前日期【晚】”);

} else if(date.before(currDate)){

System.out.println(“輸入的日期比當前日期【早】”);

} else{

System.out.println(“輸入的日期與當前日期【一樣】”);

}

}

java如何獲取當前時間 年月日 時分秒

java如何獲取當前時間以及格式化需要用到兩個類,如下圖:

1.獲取當前時間,並格式化為(年-月-日 時:分:秒)。

Date t = new Date();

SimpleDateFormat df = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);

System.out.println(df.format(t));

打印輸出結果如下圖:

2.將java.util.Date轉換為java.sql.Date格式。

java.sql.Date sqld = new java.sql.Date(t.getTime());

System.out.println(sqld);

java.sql.Time sqlt = new java.sql.Time(t.getTime());

System.out.println(sqlt);

java.sql.Timestamp sqlts = new java.sql.Timestamp(t.getTime());

System.out.println(sqlts);

打印輸出結果如下圖:

“拓展資料——java”:

Java是一種廣泛使用的計算機編程語言,擁有跨平台、面向對象、泛型編程的特性,廣泛應用於企業級Web應用開發和移動應用開發。

Java編程語言的風格十分接近C++語言。繼承了C++語言面向對象技術的核心,捨棄了容易引起錯誤的指針,以引用取代;移除了C++中的運算符重載和多重繼承特性,用接口取代;增加垃圾回收器功能。

Java編程語言是個簡單、面向對象、分布式、解釋性、健壯、安全與系統無關、可移植、高性能、多線程和動態的語言。

在Java中如何輸出當前系統日期?

利用java里的Date類輸出,進階的做法還可以用simpleDateformat類進行格式化輸出日期。代碼如下:

import java.text.SimpleDateFormat;

import java.util.Date;

/**

 * 日期格式化

 * @author young

 *

 */

public class SimpleDateFormatTest {

public static void main(String[] args) {

// 在構造器中傳入日期樣式

// SimpleDateFormat sdf=new SimpleDateFormat(

// “yyyy.MM.dd G ‘at’ HH:mm:ss z”);

SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yyyy”);

// sdf=new SimpleDateFormat(“yyyy年MM月dd日 HH時mm分ss秒”);

// 當前系統時間

Date date = new Date();

// 調用format(Date date)對象傳入的日期參數進行格式化

// format(Date date)將日期轉化成字符串

String formatDate = sdf.format(date);

System.out.println(“格式化後的日期為:” + formatDate);

}

}

java怎樣通過日期獲取星期幾?

1、使用Calendar類\x0d\x0a/**\x0d\x0a* 獲取當前日期是星期幾

\x0d\x0a*\x0d\x0a* @param dt\x0d\x0a* @return 當前日期是星期幾\x0d\x0a*/\x0d\x0apublic static String getWeekOfDate(Date dt) {\x0d\x0aString[] weekDays = {“星期日”, “星期一”, “星期二”, “星期三”, “星期四”, “星期五”, “星期六”};\x0d\x0aCalendar cal = Calendar.getInstance();\x0d\x0acal.setTime(dt);\x0d\x0aint w = cal.get(Calendar.DAY_OF_WEEK) – 1;\x0d\x0aif (w

回答於 2022-11-16

java里怎麼自定義一個日期!

在舊版本的jdk中,Java的日期/時間類的定義並不一致,在java.util和java.sql的包中都有日期類,此外用于格式化和解析的類在java.text.SimpleDateFormat包中定義。

java.util.Date是在除了SQL語句的情況下面使用的。

java.sql.Date是針對SQL語句使用的,它只包含日期而沒有時間部分

它們都有getTime方法返回毫秒數,自然就可以直接構建。 java.util.Date 是 java.sql.Date 的父類,前者是常用的表示時間的類,我們通常格式化或者得到當前時間都是用他,後者之後在讀寫數據庫的時候用他,因為PreparedStament的setDate()的第2參數和ResultSet的getDate()方法的第2個參數都是java.sql.Date。

java.sql.Date轉為java.util.Date

java.sql.Date date=new java.sql.Date();

java.util.Date d=new java.util.Date (date.getTime());

java.util.Date轉為java.sql.Date

java.util.Date utilDate=new Date();

java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());

java.util.Date utilDate=new Date();

java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());

java.sql.Time sTime=new java.sql.Time(utilDate.getTime());

java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());

這裡所有時間日期都可以被SimpleDateFormat格式化format()

SimpleDateFormat f=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);

f.format(stp);

f.format(sTime);

f.format(sqlDate);

f.format(utilDate)

java.sql.Date sqlDate=java.sql.Date.valueOf(” 2005-12-12″);

utilDate=new java.util.Date(sqlDate.getTime());

另類取得年月日的方法:

import java.text.SimpleDateFormat;

import java.util.*;

java.util.Date date = new java.util.Date();

//如果希望得到YYYYMMDD的格式SimpleDateFormat

sy1=new SimpleDateFormat(“yyyyMMDD”);

String dateFormat=sy1.format(date);

//如果希望分開得到年,月,日SimpleDateFormat

sy=new SimpleDateFormat(“yyyy”);

SimpleDateFormat sm=new SimpleDateFormat(“MM”);

SimpleDateFormat sd=new SimpleDateFormat(“dd”);

String syear=sy.format(date);

String smon=sm.format(date);

String sday=sd.format(date);

注意啦!!!在JAVA 8中有了日期的新的表示方式。在java.time包中。

   Java 8日期/時間( Date/Time)API是開發人員最受追捧的變化之一,Java從一開始就沒有對日期時間處理的一致性方法,因此日期/時間API也是除Java核心API以外另一項倍受歡迎的內容。

為什麼我們需要新的Java日期/時間API?

    在開始研究Java 8日期/時間API之前,讓我們先來看一下為什麼我們需要這樣一個新的API。在Java中,現有的與日期和時間相關的類存在諸多問題,其中有:

1. Java的日期/時間類的定義並不一致,在java.util和java.sql的包中都有日期類,此外用于格式化和解析的類在java.text包中定義。

2. java.util.Date同時包含日期和時間,而java.sql.Date僅包含日期,將其納入java.sql包並不合理。另外這兩個類都有相同的名字,這本身就是一個非常糟糕的設計。

3. 對於時間、時間戳、格式化以及解析,並沒有一些明確定義的類。對於格式化和解析的需求,我們有java.text.DateFormat抽象類,但通常情況下,SimpleDateFormat類被用於此類需求。

4. 所有的日期類都是可變的,因此他們都不是線程安全的,這是Java日期類最大的問題之一。

5. 日期類並不提供國際化,沒有時區支持,因此Java引入了java.util.Calendar java.util.TimeZone類,但他們同樣存在上述所有的問題。

     在現有的日期和日曆類中定義的方法還存在一些其他的問題,但以上問題已經很清晰地表明:Java需要一個健壯的日期/時間類。這也是為什麼Joda Time在Java日期/時間需求中扮演了高質量替換的重要角色。

Java 8日期/時間API是JSR-310的實現,它的實現目標是克服舊的日期時間實現中所有的缺陷,新的日期/時間API的一些設計原則是:

1. 不變性:新的日期/時間API中,所有的類都是不可變的,這對多線程環境有好處。

2. 關注點分離:新的API將人可讀的日期時間和機器時間(unix timestamp)明確分離,它為日期(Date)、時間(Time)、日期時間(DateTime)、時間戳(unix timestamp)以及時區定義了不同的類。

3. 清晰:在所有的類中,方法都被明確定義用以完成相同的行為。舉個例子,要拿到當前實例我們可以使用now()方法,在所有的類中都定義了format()和parse()方法,而不是像以前那樣專門有一個獨立的類。為了更好的處理問題,所有的類都使用了工廠模式和策略模式,一旦你使用了其中某個類的方法,與其他類協同工作並不困難。

4. 實用操作:所有新的日期/時間API類都實現了一系列方法用以完成通用的任務,如:加、減、格式化、解析、從日期/時間中提取單獨部分,等等。

5. 可擴展性:新的日期/時間API是工作在ISO-8601日曆系統上的,但我們也可以將其應用在非IOS的日曆上。

Java日期/時間API包含以下相應的包。

1. java.time包:這是新的Java日期/時間API的基礎包,所有的主要基礎類都是這個包的一部分,如:LocalDate, LocalTime, LocalDateTime, Instant, Period, Duration等等。所有這些類都是不可變的和線程安全的,在絕大多數情況下,這些類能夠有效地處理一些公共的需求。

2. java.time.chrono包:這個包為非ISO的日曆系統定義了一些泛化的API,我們可以擴展AbstractChronology類來創建自己的日曆系統。

3. java.time.format包:這個包包含能夠格式化和解析日期時間對象的類,在絕大多數情況下,我們不應該直接使用它們,因為java.time包中相應的類已經提供了格式化和解析的方法。

4. java.time.temporal包:這個包包含一些時態對象,我們可以用其找出關於日期/時間對象的某個特定日期或時間,比如說,可以找到某月的第一天或最後一天。你可以非常容易地認出這些方法,因為它們都具有“withXXX”的格式。

5. java.time.zone包:這個包包含支持不同時區以及相關規則的類。

新舊API的對比圖:

新API的示例代碼:

public class TimeIntroduction {

    public static void testClock() throws InterruptedException {

        //時鐘提供給我們用於訪問某個特定 時區的 瞬時時間、日期 和 時間的。  

        Clock c1 = Clock.systemUTC(); //系統默認UTC時鐘(當前瞬時時間 System.currentTimeMillis())  

        System.out.println(c1.millis()); //每次調用將返回當前瞬時時間(UTC)  

        Clock c2 = Clock.systemDefaultZone(); //系統默認時區時鐘(當前瞬時時間)  

        Clock c31 = Clock.system(ZoneId.of(“Europe/Paris”)); //巴黎時區  

        System.out.println(c31.millis()); //每次調用將返回當前瞬時時間(UTC)  

        Clock c32 = Clock.system(ZoneId.of(“Asia/Shanghai”));//上海時區  

        System.out.println(c32.millis());//每次調用將返回當前瞬時時間(UTC)  

        Clock c4 = Clock.fixed(Instant.now(), ZoneId.of(“Asia/Shanghai”));//固定上海時區時鐘  

        System.out.println(c4.millis());

        Thread.sleep(1000);

        System.out.println(c4.millis()); //不變 即時鐘時鐘在那一個點不動  

        Clock c5 = Clock.offset(c1, Duration.ofSeconds(2)); //相對於系統默認時鐘兩秒的時鐘  

        System.out.println(c1.millis());

        System.out.println(c5.millis());

    }

    public static void testInstant() {

        //瞬時時間 相當於以前的System.currentTimeMillis()  

        Instant instant1 = Instant.now();

        System.out.println(instant1.getEpochSecond());//精確到秒 得到相對於1970-01-01 00:00:00 UTC的一個時間  

        System.out.println(instant1.toEpochMilli()); //精確到毫秒  

        Clock clock1 = Clock.systemUTC(); //獲取系統UTC默認時鐘  

        Instant instant2 = Instant.now(clock1);//得到時鐘的瞬時時間  

        System.out.println(instant2.toEpochMilli());

        Clock clock2 = Clock.fixed(instant1, ZoneId.systemDefault()); //固定瞬時時間時鐘  

        Instant instant3 = Instant.now(clock2);//得到時鐘的瞬時時間  

        System.out.println(instant3.toEpochMilli());//equals instant1  

    }

    public static void testLocalDateTime() {

        //使用默認時區時鐘瞬時時間創建 Clock.systemDefaultZone() –即相對於 ZoneId.systemDefault()默認時區  

        LocalDateTime now = LocalDateTime.now();

        System.out.println(now);

//自定義時區  

        LocalDateTime now2 = LocalDateTime.now(ZoneId.of(“Europe/Paris”));

        System.out.println(now2);//會以相應的時區顯示日期  

//自定義時鐘  

        Clock clock = Clock.system(ZoneId.of(“Asia/Dhaka”));

        LocalDateTime now3 = LocalDateTime.now(clock);

        System.out.println(now3);//會以相應的時區顯示日期  

//不需要寫什麼相對時間 如java.util.Date 年是相對於1900 月是從0開始  

//2013-12-31 23:59  

        LocalDateTime d1 = LocalDateTime.of(2013, 12, 31, 23, 59);

//年月日 時分秒 納秒  

        LocalDateTime d2 = LocalDateTime.of(2013, 12, 31, 23, 59, 59, 11);

//使用瞬時時間 + 時區  

        Instant instant = Instant.now();

        LocalDateTime d3 = LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault());

        System.out.println(d3);

//解析String—LocalDateTime  

        LocalDateTime d4 = LocalDateTime.parse(“2013-12-31T23:59”);

        System.out.println(d4);

        LocalDateTime d5 = LocalDateTime.parse(“2013-12-31T23:59:59.999”);//999毫秒 等價於999000000納秒  

        System.out.println(d5);

//使用DateTimeFormatter API 解析 和 格式化  

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“yyyy/MM/dd HH:mm:ss”);

        LocalDateTime d6 = LocalDateTime.parse(“2013/12/31 23:59:59”, formatter);

        System.out.println(formatter.format(d6));

//時間獲取  

        System.out.println(d6.getYear());

        System.out.println(d6.getMonth());

        System.out.println(d6.getDayOfYear());

        System.out.println(d6.getDayOfMonth());

        System.out.println(d6.getDayOfWeek());

        System.out.println(d6.getHour());

        System.out.println(d6.getMinute());

        System.out.println(d6.getSecond());

        System.out.println(d6.getNano());

//時間增減  

        LocalDateTime d7 = d6.minusDays(1);

        LocalDateTime d8 = d7.plus(1, IsoFields.QUARTER_YEARS);

//LocalDate 即年月日 無時分秒  

//LocalTime即時分秒 無年月日  

//API和LocalDateTime類似就不演示了  

    }

    public static void testZonedDateTime() {

        //即帶有時區的date-time 存儲納秒、時區和時差(避免與本地date-time歧義)。  

//API和LocalDateTime類似,只是多了時差(如2013-12-20T10:35:50.711+08:00[Asia/Shanghai])  

        ZonedDateTime now = ZonedDateTime.now();

        System.out.println(now);

        ZonedDateTime now2 = ZonedDateTime.now(ZoneId.of(“Europe/Paris”));

        System.out.println(now2);

//其他的用法也是類似的 就不介紹了  

        ZonedDateTime z1 = ZonedDateTime.parse(“2013-12-31T23:59:59Z[Europe/Paris]”);

        System.out.println(z1);

    }

    public static void testDuration() {

        //表示兩個瞬時時間的時間段  

        Duration d1 = Duration.between(Instant.ofEpochMilli(System.currentTimeMillis() – 12323123), Instant.now());

//得到相應的時差  

        System.out.println(d1.toDays());

        System.out.println(d1.toHours());

        System.out.println(d1.toMinutes());

        System.out.println(d1.toMillis());

        System.out.println(d1.toNanos());

//1天時差 類似的還有如ofHours()  

        Duration d2 = Duration.ofDays(1);

        System.out.println(d2.toDays());

    }

    public static void testChronology() {

        //提供對java.util.Calendar的替換,提供對年曆系統的支持  

        Chronology c = HijrahChronology.INSTANCE;

        ChronoLocalDateTime d = c.localDateTime(LocalDateTime.now());

        System.out.println(d);

    }

    /**

     * 新舊日期轉換

     */

    public static void testNewOldDateConversion(){

        Instant instant=new Date().toInstant();

        Date date=Date.from(instant);

        System.out.println(instant);

        System.out.println(date);

    }

    public static void main(String[] args) throws InterruptedException {

        testClock();

        testInstant();

        testLocalDateTime();

        testZonedDateTime();

        testDuration();

        testChronology();

        testNewOldDateConversion();

    }

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/283506.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-22 08:08
下一篇 2024-12-22 08:08

相關推薦

  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論