Android中如何将日期转换为指定Firebase Timestamp格式
实现方案(JavaScript/TypeScript 环境,适配绝大多数Firebase使用场景)
步骤1:将输入日期转换为Firebase Timestamp
Firebase Timestamp是Firestore内置的时间存储类型,本质是包含秒级时间戳和纳秒值的结构化对象,转换逻辑如下:
import { Timestamp } from 'firebase/firestore'; // 解析DD-MM-YYYY格式的输入日期 const inputDateStr = '01-01-2021'; const [day, month, year] = inputDateStr.split('-').map(Number); // 构造UTC+5:30时区对应15:37:59的UTC标准时间对象 // UTC+5:30比标准UTC时间早5小时30分钟,因此计算UTC时间需要扣除对应时差 const targetUtcDate = new Date(Date.UTC(year, month - 1, day, 15 - 5, 37 - 30, 59)); // 转换为Firebase标准Timestamp格式,可直接写入Firestore数据库 const firebaseTimestamp = Timestamp.fromDate(targetUtcDate);
步骤2:格式化为指定展示字符串
如果需要输出January 01, 2021 at 3:37:59 PM UTC+5:30格式的可读字符串,使用原生Intl.DateTimeFormatAPI即可实现,无需引入第三方依赖:
const formattedStr = new Intl.DateTimeFormat('en-US', { year: 'numeric', month: 'long', day: '2-digit', hour: 'numeric', minute: '2-digit', second: '2-digit', hour12: true, timeZone: 'Asia/Kolkata', // 对应UTC+5:30时区 timeZoneName: 'shortOffset' // 调整格式匹配要求 }).format(firebaseTimestamp.toDate()).replace(',', ' at').replace('GMT', 'UTC'); console.log(formattedStr); // 输出:January 01, 2021 at 3:37:59 PM UTC+5:30
其他语言栈适配逻辑
如果你使用的是Python/Java等其他语言,只需要先将输入日期转换为对应时区的Unix毫秒级时间戳,再调用对应语言Firebase SDK的Timestamp.fromMillis()方法即可生成标准Timestamp对象,格式化输出逻辑同理调用对应语言的日期格式化API指定时区即可。
内容的提问来源于stack exchange,提问作者Suman Radhakrishnan
相关产品推荐
相关产品推荐

