You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安卓端如何将选定时间戳转换为Firebase服务器时间戳

实现方案

核心逻辑说明

你拿到的1631724053是秒级Unix时间戳,安卓日期处理API默认使用毫秒级时间戳,所以第一步需要先乘以1000转换为毫秒值,再通过日期格式化工具输出指定格式的字符串即可,目标格式的模板规则为MMMM dd, yyyy 'at' h:mm:ss a zzz。


代码实现

Kotlin 版本

方案1:SimpleDateFormat(兼容全安卓版本)

// 1. 转换秒级时间戳为毫秒
val timestampSec = 1631724053L
val timestampMs = timestampSec * 1000

// 2. 初始化格式化器,指定格式和目标时区
val sdf = SimpleDateFormat("MMMM dd, yyyy 'at' h:mm:ss a zzz", Locale.ENGLISH)
// 如需固定为UTC+5:30时区,打开下行注释即可,默认使用设备本地时区
// sdf.timeZone = TimeZone.getTimeZone("GMT+5:30")

// 3. 格式化输出
val formattedTime = sdf.format(Date(timestampMs))
Log.d("FormattedTime", formattedTime)

方案2:DateTimeFormatter(API 26+ 或使用ThreeTenABP兼容低版本)

val timestampSec = 1631724053L
val instant = Instant.ofEpochSecond(timestampSec)
// 固定为UTC+5:30时区的写法
val zoneId = ZoneId.of("GMT+5:30")
val formatter = DateTimeFormatter.ofPattern("MMMM dd, yyyy 'at' h:mm:ss a zzz", Locale.ENGLISH)
    .withZone(zoneId)

val formattedTime = formatter.format(instant)

Java 版本

// 1. 时间戳转换
long timestampSec = 1631724053L;
long timestampMs = timestampSec * 1000;

// 2. 初始化格式化器
SimpleDateFormat sdf = new SimpleDateFormat("MMMM dd, yyyy 'at' h:mm:ss a zzz", Locale.ENGLISH);
// 固定时区设置
// sdf.setTimeZone(TimeZone.getTimeZone("GMT+5:30"));

// 3. 输出结果
String formattedTime = sdf.format(new Date(timestampMs));

注意事项

  • 如果需要和Firebase服务器时间严格对齐,建议先通过Firebase SDK获取服务器时间偏移量,修正本地时间戳误差后再做格式化
  • 若需要本地化显示月份为中文,将Locale.ENGLISH改为Locale.CHINA即可
  • API 26以下使用DateTimeFormatter需要引入ThreeTenABP兼容库,避免运行时异常

内容的提问来源于stack exchange,提问作者Suman Radhakrishnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:36:03