Java中,儘可能相信本身,使用本身寫的方法,不要使用底層提供的方法。都是坑。

Date轉LocalDate時,調用toInstant()報UnsupportedOperationException異常。

https://www.jianshu.com/p/11d8ed48f7a9spring

MediaType.TEXT_PLAIN 使用的不是 utf-8

Charset.defaultCharset()

你相信系統,想利用系統字符集, 但系統字符集並不統一。咱們在給本身找事。 咱們花精力理解去理解它更沒有意義。數據庫

無用的學習成本。

好比 logback-spring.xml 裏能夠使用的變量,學習這些變量, 對編程自己沒有意義。當換一個組件, 或大版本升級, 這些知識就都廢了。編程

時間及時區

全部時間的字符串表示, 都定義爲: 北京時間, 如: 2018-10-17 09:00:00 , 就是北京的上班時間。學習

如: 客戶端提交的時間, 數據庫保存的時間。無論是 Date , LocalDateTime , 都表示北京時間。orm

之因此混亂是由於多套標準,而且標準混亂。:xml

  1. 系統定義的標準: 以UTC時間爲準, 世界任何一個地方, 同一時間獲取的時間, 毫秒數相同, 但由於定義的時區不一樣,因此顯示的時間值不一樣。
    但 時間類型 不是Java 的標準數據類型, 在拿到 Data 或 LocalDateTime 時, 這裏面是沒有時區的,只有毫秒數。
    因此這時候 , Format 字符串的時候,就會出現問題。
  2. 本地化系統標準:須要本地時間表示,如上,當系統在傳遞 2018-10-17 09:00:00 時, 表示的是當地北京時間9點。
  3. Date.getYear 我覺得會1970年會返回 1970, 其實返回 0。
  4. Date.getMonth 我覺得1月會返回1 , 其實返回0。

解決的方式:
不以毫秒數爲準。 以 年月日時分秒爲準。即 以字符串表示爲準。 表示當地時間。utf-8

  1. 字符串轉時間時,按北京時間轉換。
  2. 時間類型轉換時,以 年月日時分秒 數據轉換。
相關文章
相關標籤/搜索