我在android中将时间戳转换为日期和时间有问题吗? [复制]

Posted

技术标签:

【中文标题】我在android中将时间戳转换为日期和时间有问题吗? [复制]【英文标题】:I have problem to convert timestamp to date and time in android? [duplicate] 【发布时间】:2020-08-08 07:01:41 【问题描述】:

您好,当我使用此代码将时间戳转换为日期时。但我不知道何时输入日期现在年份时间戳以获取打印 1970 年的时间。 你能帮帮我吗?

我使用的这段代码:

Date a = new Date(1586822400);
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
String d = simpleDateFormat.format(date);

但是:

【问题讨论】:

顺便考虑扔掉长期过时且臭名昭著的麻烦SimpleDateFormat和朋友,并将ThreeTenABP添加到您的android项目中,以便使用java.time,现代Java日期和时间API .使用起来感觉好多了。 【参考方案1】:

不要使用outdated date/time API。使用modern date/time API 进行如下操作:

import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

public class Main 
    public static void main(String[] args) 
        // Using Instant.ofEpochMilli
        LocalDate date = Instant.ofEpochMilli(1586822400 * 1000L).atZone(ZoneId.systemDefault()).toLocalDate();
        System.out.println(DateTimeFormatter.ofPattern("yyyy/MM/dd").format(date));

        // Directly using Instant.ofEpochSecond
        date = Instant.ofEpochSecond(1586822400).atZone(ZoneId.systemDefault()).toLocalDate();
        System.out.println(DateTimeFormatter.ofPattern("yyyy/MM/dd").format(date));
    

输出:

2020/04/14
2020/04/14

【讨论】:

【参考方案2】:
    Date date = new Date(1586822400L*1000L);
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
    String strDate = simpleDateFormat.format(date);

你需要乘以 1000L 将 unix 秒转换为毫秒秒;

【讨论】:

以上是关于我在android中将时间戳转换为日期和时间有问题吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android中将时间戳字符串转换为日期[重复]

如何在android中将日期转换为firebase时间戳格式

将时间戳转换为特定时区然后在 bigquery 中将其转换为日期时出现问题

如何在标准 SQL 中将 Epoch 时间戳转换为日期

如何在 iOS/XCode 中将毫秒时间戳转换为日期和时间?

如何在雪花中将时间戳转换为日期