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

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

如何更改 List<Date> 的日期格式

如何更改 List<Date> 的日期格式

阿波羅的戰(zhàn)車 2022-12-28 16:31:04
我有一個(gè)列表,當(dāng)我打印/顯示其內(nèi)容時(shí),我得到了特定格式的日期。比方說我想以不同的格式獲取它們,我如何選擇我希望打印列表的格式?public List<Date> TimeHistory = new ArrayList<Date>();ArrayAdapter<Date> adapter = new ArrayAdapter<Date>(getActivity(), R.layout.listview_timehistory, R.id.tvTime,TimeHistory);例如,這段代碼按照我的意愿給了我列表,但我想以不同的格式獲取它。順便說一句,當(dāng)我將項(xiàng)目添加到列表中時(shí),我使用 simpleDateFormat 和我想要的格式。但是當(dāng)列表視圖中顯示項(xiàng)目時(shí),它們似乎不使用這種格式。if(Info.get("TIME")!=null)                    {                        SimpleDateFormat  format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");                        try {                            Date date = format.parse(Info.get("TIME"));                            message.TimeHistory.add(date);                        }                        catch (Exception e){                        }                    }
查看完整描述

3 回答

?
溫溫醬

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

博士

format.parse( Info.get("TIME") )    // Get a legacy `java.util.Date` object.

.toInstant()                        // Convert from legacy class to modern class.

.atOffset(                          // Convert from the basic `Instant` class to the more flexible `OffsetDateTime` class.

    ZoneOffset.UTC                  // Specify the offset-from-UTC in which you want to view the date and time-of-day. 

)  

.format(                            // Generate text representing the value of our `OffsetDateTime` object.

    DateTimeFormatter.ofPattern( "dd/MM/yyyy HH:mm:ss" )  // Specify your custom formatting pattern. Better to cache this object, in real work. 

)                                   // Returns a `String

Date幾年前被Instant. 該Instant::toString方法使用了一種更好的格式,一種現(xiàn)代標(biāo)準(zhǔn)格式。


Instant.now().toString() 

2019-06-04T20:11:18.607231Z


轉(zhuǎn)換您的Date對(duì)象,myDate.toInstant().


細(xì)節(jié)

該Object::toString方法并不意味著靈活。其目的是在調(diào)試或記錄時(shí)提供對(duì)象的簡單視圖。


但是,如您所見,java.util.Date::toString實(shí)現(xiàn)很糟糕。


首先,將 JVM 當(dāng)前的默認(rèn)時(shí)區(qū)應(yīng)用于存儲(chǔ)在Date對(duì)象中的時(shí)刻。那一刻實(shí)際上是在UTC中。這種誤報(bào)會(huì)造成時(shí)區(qū)實(shí)際上不在對(duì)象中的錯(cuò)覺。


其次,該Date::toString方法使用了糟糕的格式,只有英文,人類難以閱讀,機(jī)器也難以解析。


這個(gè)Date班還有很多其他問題。您根本不應(yīng)再使用此類。隨著 JSR 310 的采用,java.time.Instant類取代了它。


您應(yīng)該盡可能替換Date為Instant。在你不能的地方,轉(zhuǎn)換。調(diào)用添加到舊類的新方法。


Instant instant = myJavaUtilDate.toInstant() ;

幸運(yùn)的是,上的toString方法Instant設(shè)計(jì)得更好。它告訴你真相,UTC中的一個(gè)時(shí)刻。它使用標(biāo)準(zhǔn)的ISO 8601格式。發(fā)明該標(biāo)準(zhǔn)的目的是為了以一種既易于機(jī)器解析又易于跨文化的人類閱讀的方式將日期時(shí)間值作為文本進(jìn)行通信。


String output = instant.toString() ;

2019-06-04T20:11:18.607231Z


因此Instant對(duì)象列表將如下所示。


Instant now = Instant.now();

List < Instant > instants = List.of( now.minus( 1L , ChronoUnit.HOURS ) , now , now.plus( 20L , ChronoUnit.MINUTES ) );

String output = instants.toString();

[2019-06-04T19:41:51.210465Z, 2019-06-04T20:41:51.210465Z, 2019-06-04T21:01:51.210465Z]


你的代碼片段

至于您的代碼片段,請(qǐng)轉(zhuǎn)換為一個(gè)java.time.OffsetDateTime對(duì)象,并使用自定義格式模式生成文本。


DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/yyyy HH:mm:ss" ) ;

 …   

if(Info.get("TIME")!=null)

{

    try {

        Date date = format.parse( Info.get("TIME") ) ;

        Instant instant = date.toInstant() ;

        OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;

        String output = odt.format( f ) ;

        message.TimeHistory.add(date);

    }

    catch (Exception e){


    }

}


查看完整回答
反對(duì) 回復(fù) 2022-12-28
?
守候你守候我

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

如果你做了類似的事情,System.out.println(TimeHistory)或者如果你在調(diào)試時(shí)“只”看你的日期,就會(huì)調(diào)用java.util.DatestoString()方法。System.out.println(TimeHistory)調(diào)用java.util.AbstractCollectionstoString()方法,它執(zhí)行對(duì)每個(gè)項(xiàng)目toString()方法的調(diào)用。

如果你想改變這種行為,你應(yīng)該擴(kuò)展java.util.Date并覆蓋toString()-method


查看完整回答
反對(duì) 回復(fù) 2022-12-28
?
侃侃無極

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

最好的方法是使用 simpleDateFormat 類,您可以在其中使用字符串指定格式: https ://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

但是 Date 對(duì)象是舊的,你可以使用 Java8 日期類來獲取時(shí)間

編輯后:顯然,現(xiàn)在很明顯您想更改 ArrayAdapter 的行為,因?yàn)槟J(rèn)情況下它使用 OBJECT.toString() 方法來顯示數(shù)據(jù),因此它使用 java.util.Date.toString()。你想改變這種行為,這就是你想要的:

在 ArrayAdapter 中顯示自定義對(duì)象 - 簡單的方法?


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

添加回答

舉報(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)