第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

將字符串轉(zhuǎn)換為Java中的日歷對(duì)象

將字符串轉(zhuǎn)換為Java中的日歷對(duì)象

慕村9548890 2019-12-11 15:09:56
我是Java新手,通常使用PHP。我正在嘗試轉(zhuǎn)換此字符串:2011年3月14日星期一格林尼治標(biāo)準(zhǔn)時(shí)間16:02:37放入Calendar對(duì)象,這樣我就可以像這樣輕松地提取Year和Month:String yearAndMonth = cal.get(Calendar.YEAR)+cal.get(Calendar.MONTH);手動(dòng)解析它不是一個(gè)好主意嗎?使用子串方法?任何建議將幫助謝謝!
查看完整描述

3 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個(gè)贊

現(xiàn)代方法使用java.time類。


YearMonth.from(

    ZonedDateTime.parse( 

        "Mon Mar 14 16:02:37 GMT 2011" , 

        DateTimeFormatter.ofPattern( "E MMM d HH:mm:ss z uuuu" )

     )

).toString()

2011-03


避免使用舊的日期時(shí)間類

現(xiàn)代方法是使用java.time類。諸如此類的舊日期時(shí)間類Calendar已被證明設(shè)計(jì)不良,令人困惑和麻煩。


定義一個(gè)自定義格式化程序以匹配您的字符串輸入。


String input = "Mon Mar 14 16:02:37 GMT 2011";

DateTimeFormatter f = DateTimeFormatter.ofPattern( "E MMM d HH:mm:ss z uuuu" );

解析為ZonedDateTime。


ZonedDateTime zdt = ZonedDateTime.parse( input , f );

您對(duì)年度和月份感興趣。java.time類包括YearMonth用于該目的的類。


YearMonth ym = YearMonth.from( zdt );

您可以根據(jù)需要詢問年和月的數(shù)字。


int year = ym.getYear();

int month = ym.getMonthValue();

但是該toString方法會(huì)生成標(biāo)準(zhǔn)ISO 8601格式的字符串。


String output = ym.toString();

全部放在一起。


String input = "Mon Mar 14 16:02:37 GMT 2011";

DateTimeFormatter f = DateTimeFormatter.ofPattern( "E MMM d HH:mm:ss z uuuu" );

ZonedDateTime zdt = ZonedDateTime.parse( input , f );

YearMonth ym = YearMonth.from( zdt );

int year = ym.getYear();

int month = ym.getMonthValue();

轉(zhuǎn)儲(chǔ)到控制臺(tái)。


System.out.println( "input: " + input );

System.out.println( "zdt: " + zdt );

System.out.println( "ym: " + ym );

輸入:2011年3月14日星期一格林尼治標(biāo)準(zhǔn)時(shí)間


zdt:2011-03-14T16:02:37Z [GMT]


ym:2011-03


現(xiàn)場(chǎng)代碼

請(qǐng)參閱在IdeOne.com中運(yùn)行的代碼。


轉(zhuǎn)換次數(shù)

如果必須有一個(gè)Calendar對(duì)象,則可以GregorianCalendar使用添加到舊類的新方法轉(zhuǎn)換為。


GregorianCalendar gc = GregorianCalendar.from( zdt );

關(guān)于java.time

該java.time框架是建立在Java 8和更高版本。這些類取代麻煩的老傳統(tǒng)日期時(shí)間類,如java.util.Date,Calendar,和SimpleDateFormat。


現(xiàn)在處于維護(hù)模式的Joda-Time項(xiàng)目建議遷移到j(luò)ava.time。


要了解更多信息,請(qǐng)參見Oracle教程。并在Stack Overflow中搜索許多示例和說明。規(guī)格為JSR 310。


在哪里獲取java.time類?


Java SE 8和 SE 9及更高版本

內(nèi)置的

標(biāo)準(zhǔn)Java API的一部分,具有捆綁的實(shí)現(xiàn)。

Java 9添加了一些次要功能和修復(fù)。

Java SE 6和 SE 7

java.time的許多功能在ThreeTen- Backport中都被反向移植到Java 6和7 。

安卓系統(tǒng)

所述ThreeTenABP項(xiàng)目適應(yīng)ThreeTen-反向移植為Android(上面提到的)特異性。

請(qǐng)參閱如何使用…。

該ThreeTen-額外項(xiàng)目與其他類擴(kuò)展java.time。該項(xiàng)目為將來可能在java.time中添加內(nèi)容提供了一個(gè)試驗(yàn)場(chǎng)。您可以在此比如找到一些有用的類Interval,YearWeek,YearQuarter,和更多。



查看完整回答
反對(duì) 回復(fù) 2019-12-12
?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊

好吧,我認(rèn)為復(fù)制像這樣的類中已經(jīng)存在的代碼將是一個(gè)壞主意SimpleDateFormat。


在另一方面,我個(gè)人會(huì)建議避免Calendar和Date完全如果可以的話,并使用約達(dá)時(shí)間,而不是作為一個(gè)更好的設(shè)計(jì)的日期和時(shí)間API。例如,你需要知道,SimpleDateFormat是不是線程安全的,所以你要么需要線程本地人,同步,或一個(gè)新實(shí)例每次使用它的時(shí)候。Joda解析器和格式化程序是線程安全的。



查看完整回答
反對(duì) 回復(fù) 2019-12-12
  • 3 回答
  • 0 關(guān)注
  • 529 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)