當前位置:首頁 » 編程語言 » java指定日期

java指定日期

發布時間: 2022-08-31 00:44:07

❶ 如何得到一個指定日期6個月後的日期,用java來寫

參考下面方法
import java.util.*;
import java.text.*;
class test{
public static void main(String []args){
Calendar c = Calendar.getInstance();//獲得一個日歷的實例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try{
date = sdf.parse("2016-12-23");//初始日期
}catch(Exception e){

}
c.setTime(date);//設置日歷時間
c.add(Calendar.MONTH,6);//在日歷的月份上增加6個月
System.out.println(sdf.format(c.getTime()));//得到6個月後的日期
}
}

❷ 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的對比圖:

publicclassTimeIntroction{
publicstaticvoidtestClock()throwsInterruptedException{
//時鍾提供給我們用於訪問某個特定時區的瞬時時間、日期和時間的。
Clockc1=Clock.systemUTC();//系統默認UTC時鍾(當前瞬時時間System.currentTimeMillis())
System.out.println(c1.millis());//每次調用將返回當前瞬時時間(UTC)
Clockc2=Clock.systemDefaultZone();//系統默認時區時鍾(當前瞬時時間)
Clockc31=Clock.system(ZoneId.of("Europe/Paris"));//巴黎時區
System.out.println(c31.millis());//每次調用將返回當前瞬時時間(UTC)
Clockc32=Clock.system(ZoneId.of("Asia/Shanghai"));//上海時區
System.out.println(c32.millis());//每次調用將返回當前瞬時時間(UTC)
Clockc4=Clock.fixed(Instant.now(),ZoneId.of("Asia/Shanghai"));//固定上海時區時鍾
System.out.println(c4.millis());
Thread.sleep(1000);
System.out.println(c4.millis());//不變即時鍾時鍾在那一個點不動
Clockc5=Clock.offset(c1,Duration.ofSeconds(2));//相對於系統默認時鍾兩秒的時鍾
System.out.println(c1.millis());
System.out.println(c5.millis());
}
publicstaticvoidtestInstant(){
//瞬時時間相當於以前的System.currentTimeMillis()
Instantinstant1=Instant.now();
System.out.println(instant1.getEpochSecond());//精確到秒得到相對於1970-01-0100:00:00UTC的一個時間
System.out.println(instant1.toEpochMilli());//精確到毫秒
Clockclock1=Clock.systemUTC();//獲取系統UTC默認時鍾
Instantinstant2=Instant.now(clock1);//得到時鍾的瞬時時間
System.out.println(instant2.toEpochMilli());
Clockclock2=Clock.fixed(instant1,ZoneId.systemDefault());//固定瞬時時間時鍾
Instantinstant3=Instant.now(clock2);//得到時鍾的瞬時時間
System.out.println(instant3.toEpochMilli());//equalsinstant1
}
(){
//使用默認時區時鍾瞬時時間創建Clock.systemDefaultZone()-->即相對於ZoneId.systemDefault()默認時區
LocalDateTimenow=LocalDateTime.now();
System.out.println(now);
//自定義時區
LocalDateTimenow2=LocalDateTime.now(ZoneId.of("Europe/Paris"));
System.out.println(now2);//會以相應的時區顯示日期
//自定義時鍾
Clockclock=Clock.system(ZoneId.of("Asia/Dhaka"));
LocalDateTimenow3=LocalDateTime.now(clock);
System.out.println(now3);//會以相應的時區顯示日期
//不需要寫什麼相對時間如java.util.Date年是相對於1900月是從0開始
//2013-12-3123:59
LocalDateTimed1=LocalDateTime.of(2013,12,31,23,59);
//年月日時分秒納秒
LocalDateTimed2=LocalDateTime.of(2013,12,31,23,59,59,11);
//使用瞬時時間+時區
Instantinstant=Instant.now();
LocalDateTimed3=LocalDateTime.ofInstant(Instant.now(),ZoneId.systemDefault());
System.out.println(d3);
//解析String--->LocalDateTime
LocalDateTimed4=LocalDateTime.parse("2013-12-31T23:59");
System.out.println(d4);
LocalDateTimed5=LocalDateTime.parse("2013-12-31T23:59:59.999");//999毫秒等價於999000000納秒
System.out.println(d5);
//使用DateTimeFormatterAPI解析和格式化
DateTimeFormatterformatter=DateTimeFormatter.ofPattern("yyyy/MM/ddHH:mm:ss");
LocalDateTimed6=LocalDateTime.parse("2013/12/3123: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());
//時間增減
LocalDateTimed7=d6.minusDays(1);
LocalDateTimed8=d7.plus(1,IsoFields.QUARTER_YEARS);
//LocalDate即年月日無時分秒
//LocalTime即時分秒無年月日
//API和LocalDateTime類似就不演示了
}
(){
//即帶有時區的date-time存儲納秒、時區和時差(避免與本地date-time歧義)。
//API和LocalDateTime類似,只是多了時差(如2013-12-20T10:35:50.711+08:00[Asia/Shanghai])
ZonedDateTimenow=ZonedDateTime.now();
System.out.println(now);
ZonedDateTimenow2=ZonedDateTime.now(ZoneId.of("Europe/Paris"));
System.out.println(now2);
//其他的用法也是類似的就不介紹了
ZonedDateTimez1=ZonedDateTime.parse("2013-12-31T23:59:59Z[Europe/Paris]");
System.out.println(z1);
}
publicstaticvoidtestDuration(){
//表示兩個瞬時時間的時間段
Durationd1=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()
Durationd2=Duration.ofDays(1);
System.out.println(d2.toDays());
}
(){
//提供對java.util.Calendar的替換,提供對年歷系統的支持
Chronologyc=HijrahChronology.INSTANCE;
ChronoLocalDateTimed=c.localDateTime(LocalDateTime.now());
System.out.println(d);
}
/**
*新舊日期轉換
*/
(){
Instantinstant=newDate().toInstant();
Datedate=Date.from(instant);
System.out.println(instant);
System.out.println(date);
}
publicstaticvoidmain(String[]args)throwsInterruptedException{
testClock();
testInstant();
testLocalDateTime();
testZonedDateTime();
testDuration();
testChronology();
testNewOldDateConversion();
}
}

❸ java語言中判定一個日期是否為指定日期,的判定語句怎麼寫

其實對於一般的數據格式一致的日期來說 可以用if(date1 == date2 || date1.equals(date2)){}

❹ java指定的字元串日期格式化及計算

packagetimeutil;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassTimeTest{

publicstaticvoidmain(String[]args){

Strings1="20151117190936";
Strings2="20090915-17:20:12";
try{
Datedate1=newSimpleDateFormat("yyyyMMddHHmmss").parse(s1);
//輸出格式
System.out.println("=======解析字元串1======");
System.out.println(newSimpleDateFormat("yyyy/MM/ddHH:mm:ss").format(date1));
System.out.println(newSimpleDateFormat("yyyy-MM-ddHH:mm:ss").format(date1));
System.out.println("=======解析字元串2======");
Datedate2=newSimpleDateFormat("yyyyMMdd-HH:mm:ss").parse(s2);
System.out.println(newSimpleDateFormat("yyyy/MM/ddHH:mm:ss").format(date2));
System.out.println(newSimpleDateFormat("yyyy-MM-ddHH:mm:ss").format(date2));
}catch(ParseExceptione){
e.printStackTrace();
}
}

}

❺ java 獲取資料庫中指定格式的日期

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

public class TestDate {
public static void main(String[] args) {
String str1 = "Mon Mar 05 00:00:00 CST 2012";
String modle="yyyy-MM-dd HH:mm:ss";
System.out.println(getTime(str1,modle));

}

public static String getTime(String str,String model){
String dateStr="";
SimpleDateFormat f=new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy",Locale.ENGLISH);
try {
Date date=f.parse(str);
dateStr=new SimpleDateFormat(model).format(date);
} catch (Exception e) {
e.printStackTrace();
}

return dateStr;
}

}

❻ 如果在JAVA中獲得指定時間

java Club 108092625

獲取指定日期建議使用Calendar ,通過Calendar的add方法你可以設置獲取當前日期前多少天,後多少天
比如使用下面的工具類:
String currentData= DateTimeUtils.getSystemDate() // 返回當前日期,格式為yyyy-MM-dd
String beforeFiveDays = DateTimeUtils.addDays(currentData, -5); //前五天
String afterFiveDays = DateTimeUtils.addDays(currentData, 5); //後五天
附上一個工具類:

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

/**
* 日期時間工具類
*/
public final class DateTimeUtil
{
private DateTimeUtil()
{
}

private static String DATE_FORMAT_PATTERN = "yyyyMMdd";

private static String TIME_FORMAT_PATTERN = "HHmmss";

/**
* 轉換字元串為日期
*
* @param source
* 字元串形式的日期表示
* @return Date
*/
public static Date toDateTime(String source, String pattern)
{
Date date = null;
try
{
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
date = dateFormat.parse(source);
}
catch (ParseException e)
{
// nothing
}

return date;
}

/**
* 轉換字元串為日期
*
* @param source
* 字元串形式的日期<code>yyyyMMdd</code>
* @return Date
*/
public static Date toDate(String source)
{
return toDateTime(source, DATE_FORMAT_PATTERN);
}

/**
* 轉換字元串為時間
*
* @param source
* 字元串形式的時間<code>HHmmss</code>
* @return Date
*/
public static Date toTime(String source)
{
return toDateTime(source, TIME_FORMAT_PATTERN);
}

/**
* 將一種形式的字元串日期轉換為另一種形式的字元串日期
*
* @param source
* 原日期字元串
* @param fromPattern
* 原日期字元串格式
* @param toPattern
* 目標日期字元串格式
* @return 新的日期字元串
*/
public static String convert(String source, String fromPattern, String toPattern)
{
Date date = toDateTime(source, fromPattern);

if (date == null)
{
return null;
}

SimpleDateFormat dateFormat = new SimpleDateFormat(toPattern);
return dateFormat.format(date);
}

/**
* 在指定的日期上面增加指定的天數
*
* @param source
* 源日期(yyyyMMdd)
* @param days
* 天數,正負皆可
* @return
*/
public static String addDays(String source, int days)
{
Date date = toDate(source);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, days);
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT_PATTERN);
return dateFormat.format(calendar.getTime());
}

/**
* 在指定的日期上面增加指定的月數
*
* @param source
* 原日期(yyyyMMdd)
* @param months
* 月數,正負皆可
* @return
*/
public static String addMonth(String source , int months)
{
Date date = toDate(source);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, months);
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT_PATTERN);
return dateFormat.format(calendar.getTime());
}

/**
* 在指定的日期上面增加指定的年數
*
* @param source
* 原日期(yyyyMMdd)
* @param years
* 年數,正負皆可
* @return
*/
public static String addYears(String source, int years)
{
Date date = toDate(source);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.YEAR, years);
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT_PATTERN);
return dateFormat.format(calendar.getTime());
}

/**
* 返回指定格式的時間字元串
*
* @param format
* (返回字元串的格式)
* @return dateStr
* @throws ParseException
*/
public static String getSystemDateTime(String format)
{
Date date = new Date();
SimpleDateFormat simpDate = new SimpleDateFormat(format);
String dateStr = simpDate.format(date);
return dateStr;
}

/**
* 取當前日期,格式yyyyMMdd
*
* @return
*/
public static String getSystemDate()
{
return getSystemDateTime(DATE_FORMAT_PATTERN);
}

/**
* 取當前時間,格式HHmmss
*
* @return
*/
public static String getSystemTime()
{
return getSystemDateTime(TIME_FORMAT_PATTERN);
}

/**
* 格式化指定日期
*
* @param date
* 日期
* @param pattern
* 格式串
* @return
*/
public static String format(Date date, String pattern)
{
SimpleDateFormat simpDate = new SimpleDateFormat(pattern);
String dateStr = simpDate.format(date);
return dateStr;
}

/**
* 格式化指定日期
*
* @param date
* 日期
* @param pattern
* 格式串
* @return
*/
public static String format(long date, String pattern)
{
Date date2 = new Date(date);
return format(date2, pattern);
}

}

❼ java實現設置指定日期並格式化,然後再列印出來(代碼)

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 設置指定日期
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2013);
cal.set(Calendar.MONTH, 4);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date date = new Date(cal.getTimeInMillis());
// 格式化
String dateStr = dateFormat.format(date);
// 列印
System.out.println(dateStr);
望採納!

熱點內容
用腳本砍價 發布:2025-01-16 11:04:36 瀏覽:680
公司密碼包括什麼 發布:2025-01-16 11:04:04 瀏覽:544
php批量查詢 發布:2025-01-16 10:43:38 瀏覽:917
適合搭建代理伺服器的雲 發布:2025-01-16 10:42:49 瀏覽:428
我的世界手機版伺服器怎麼注冊 發布:2025-01-16 10:41:30 瀏覽:614
小米雲電視伺服器 發布:2025-01-16 10:37:03 瀏覽:350
php開源wiki 發布:2025-01-16 10:27:19 瀏覽:189
sql加欄位備注 發布:2025-01-16 10:21:49 瀏覽:565
線割編程教程 發布:2025-01-16 10:21:03 瀏覽:18
谷歌瀏覽器緩存刪除 發布:2025-01-16 10:19:36 瀏覽:414