2014-07-02 54 views
3

YYYYWW格式有沒有辦法在Java中使用的日期格式爲YYYYWW?有一個星期的一個月,但有沒有辦法找到一年的一週?有沒有在Java

+1

是的,根據[這裏]有一個星期格式可用[http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html] –

+0

[你是在找什麼for?](https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=java%20find%20week%20of%20the%20year) –

+2

w \t Week在\t號碼\t 27(http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html) – Smutje

回答

2

標準格式

ISO 8601標準定義了這樣的一週的一年。您可能需要查看維基百科文章herehere以獲取指導,因爲您的格式不夠標準且不明確。該標準使用W和可選的連字符,例如YYYY-Www

喬達時間

Joda-Time library擁有ISO 8601包括數週良好的支持。除其他外,請參見ISODateTimeFormat類和其weekYearWeek方法。

請注意,時區是至關重要的在確定一個日期,因此一個星期。在巴黎週日結束的午夜中風意味着在法國新的一週,同時還在蒙特利爾的「上週」。使用約達時間2.5

實施例的代碼。

DateTime now = DateTime.now(DateTimeZone.forID("America/Montreal")); 
String output = ISODateTimeFormat.weekyearWeek().print(now); 
int weekNumber = now.getWeekOfWeekyear(); 

運行時。

now: 2014-11-03T02:30:10.124-05:00 
output: 2014-W45 

避免j.u.Date

的java.util.Date和。與Java捆綁在一起的日曆和SimpleDateFormat類是非常麻煩的。避免它們。使用Joda-Time或Java 8中新的java.time package(受Joda-Time啓發)。

2

您可以使用SimpleDateFormat格式化和分析任何的日期字符串。

你正在尋找的格式是"yyyyww"

+0

是的。謝謝BetaRide – Harbinger

+0

這是不正確的。 'y'給你絕對年份,'Y'給你一週,即一週屬於的年份。 1. 2012年1月可能屬於2012年,但是2011年第52周的一部分。所以應該是YYYYww。 –

0

是的,我們可以用Y表示該月的周和y年度的一週。 例如:Date d =new Date(); SimpleDateFormat ft = new SimpleDateFormat ("yyyyww"); System.out.println(ft.format(d));

可以給你當年和周。

1

y represent Year凡爲小心 - 因爲w represents Week in yearW represents Week in month

嘗試

 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyww"); 
     System.out.println(dateFormat.format(new Date())); 

參考this更多的日期格式

3

我不太清楚你的問題,但也許你想要一個像ISO一樣的星期幾,每年和每年一個星期。如果是這樣的話,請注意這樣一個事實,即一年的另一個定義,即一週的日期(或其他稱爲以周爲基礎的年份)。今年在大多數情況下與標準日曆年相同,但在日曆年的開始或結束時可能會有所不同,具體取決於ISO周規則(星期一爲每週第一天和第一週至少有至少一天曆年4天)。

如果你看看這種基於週年和ISO周的一年,那麼你應該使用這個表達式:

// In France ISO-8601-week-rules are valid, so let's use this locale to choose ISO. 
SimpleDateFormat sdf = new SimpleDateFormat("YYYYww", Locale.FRANCE); // big letter Y! 

否則,你當然可以只與對方的回答去@ BetaRide:「yyyyww」。