首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android TimePicker 時間上傳服務器:參數格式陷阱與正確姿勢

     編輯:程式設計綜合問答

TimePicker 選取時間上傳後端的關鍵細節

Android 應用中使用 TimePicker 獲取用戶選擇的時間並上傳服務器看似簡單,實則暗藏參數格式不匹配的坑。許多開發者直接上傳 Hour:Minute 字符串(如 "16:05"),導致後端解析失敗或存儲錯誤。

核心問題:單位與格式不一致

  • 後端期望:通常為 秒級時間戳(如 36000 表示 10:00:00)或標準 ISO 8601 格式("10:00:00")。
  • 前端實際發送:若直接拼接 hour + ":" + minute,得到 "16:05",單位為「時:分」,非秒數,且缺少秒字段。

正確實現方案

方案一:轉換為秒數(推薦,跨平台兼容性最好)

// Kotlin 示例
val totalSeconds = (timePicker.hour * 3600 + timePicker.minute * 60).toLong()
// 上傳 totalSeconds 給後端

方案二:格式化為標準時間字符串

val timeStr = String.format(Locale.getDefault(), "%02d:%02d:00", timePicker.hour, timePicker.minute)
// 上傳 "16:05:00"

上傳代碼放置位置

應在 TimePickerDialog.OnTimeSetListener#onTimeSet() 回調中構造參數並發起網絡請求(使用 Retrofit/OkHttp/Volley 等),而非 在 UI 初始化代碼中。

調試建議

  1. 抓包(Charles/Fiddler)查看實際發送的 JSON/Form 數據。
  2. 與後端協議文檔逐字段核對類型、單位、必填性。
  3. 單元測試覆蓋邊界值(00:00、23:59)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved