當前位置: 首頁>>技術教程>>正文


考慮時區的日期/時間轉換-Android

本文將說明在Android應用程序中將日期/時間從一個時區轉換為另一個時區的概念。
在正常情況下,您是從服務器獲取GMT時區的時間戳,並且需要按本地時區進行轉換以將其顯示到UI。如果您在將日期/時間從一個時區轉換為另一個時區時感到困惑,可以參考本文。
為了理解這個概念,考慮以下情形,首先從服務器以GMT格式(假設)獲取時間戳,然後需要將其轉換為某種模型,該模型將日期存儲為Local格式的Date對象,然後將日期作為時間戳(字符串)以GMT格式輸入到數據庫中,接著提供給UI,以某種本地格式在UI模型中獲取了日期對象,最後以本地格式在UI上以字符串形式顯示日期。流程如下圖所示:
時間/日期獲取
在整個過程中,我們需要將日期對象轉為字符串或者將字符串轉為日期對象。要在Android中進行轉換,我們使用SimpleDateFormat類,如下所示:

/** Converting from String to Date **/
fun String.getDateWithServerTimeStamp(): Date? {
 val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
     Locale.getDefault())
 dateFormat.timeZone = TimeZone.getTimeZone("GMT")  // IMP !!!
 try {
  return dateFormat.parse(this)
 } catch (e: ParseException) {
  return null
}
/** Converting from Date to String**/
fun Date.getStringTimeStampWithDate(): String {
 val dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
     Locale.getDefault())
 dateFormat.timeZone = TimeZone.getTimeZone("GMT")
 return dateFormat.format(this)
}
/** TESTING **/
val dateString = "2018-01-09T07:06:41.747Z"
val date = dateString.getDateWithServerTimeStamp()
Log.d("LOG", "String To Date Conversion " +date.toString())
val dateBackToString = date?.getStringTimeStampWithDate()
Log.d("LOG", "Date To String Conversion " +dateBackToString)
/** OUTPUT **/
String To Date Conversion Tue Jan 09 15:06:41 GMT+08:00 2018
Date To String Conversion 2018-01-09T07:06:41.747Z
/** NOTE: I am currently at GMT+08:00 **/

 

參考資料

本文由《純淨天空》出品。文章地址: https://vimsky.com/zh-tw/article/4573.html,未經允許,請勿轉載。