Dart如何将数据库中存储的时间戳1631363150转换为dd-mm-yyyy格式
Dart 秒级时间戳转dd-mm-yyyy格式日期实现方案
你存储的1631363150属于秒级Unix时间戳,Dart内置的DateTime类默认接收毫秒/微秒级时间戳,所以转换时需要先做单位转换,日期格式化可以用官方维护的intl包完成,具体步骤如下:
步骤1:添加依赖
在项目的pubspec.yaml文件中添加intl依赖:
dependencies: flutter: sdk: flutter intl: ^0.18.1 # 可替换为当前最新稳定版本
添加后执行flutter pub get(纯Dart项目执行dart pub get)安装依赖。
步骤2:核心转换代码
import 'package:intl/intl.dart'; String timestampToDate(String timestampStr) { // 1. 将字符串时间戳转为int类型,转成毫秒级时间戳 int timestamp = int.parse(timestampStr) * 1000; // 2. 生成DateTime对象,如需用UTC时间可改用DateTime.fromMillisecondsSinceEpoch(timestamp, isUtc: true) DateTime date = DateTime.fromMillisecondsSinceEpoch(timestamp); // 3. 按dd-mm-yyyy格式格式化,注意月份用大写MM,小写mm对应分钟 return DateFormat('dd-MM-yyyy').format(date); } // 测试示例 void main() { String storedTimestamp = '1631363150'; String formattedDate = timestampToDate(storedTimestamp); print(formattedDate); // 输出对应当地时间:11-09-2021 }
注意事项
- 如果你数据库存储的是毫秒级时间戳,转换时不需要乘以1000,直接传入
fromMillisecondsSinceEpoch即可 - 格式字符串中
MM代表两位月份,mm代表两位分钟,不要写错避免格式化错误 - 如需输出其他格式,可修改
DateFormat的参数,比如yyyy年MM月dd日就能输出2021年09月11日格式的日期
内容的提问来源于stack exchange,提问作者krimo04
相关产品推荐
相关产品推荐

