简单日期格式给出了纪元时间戳的错误信息

zin*_*995 2 time android date simpledateformat

我发现这给出了错误的日期。但我怎么解决不了。请有人帮助我。我是android开发的新手。提前致谢;

字符串时间戳=“1538970640”;

SimpleDateFormat formatter = new SimpleDateFormat("dd MMM 'at' hh:mm a z" );
String dateString = formatter.format(new Date(Long.parseLong(timestamp)));
Run Code Online (Sandbox Code Playgroud)

这将返回:

19 Jan at 01:29 AM GMT+06:oo
Run Code Online (Sandbox Code Playgroud)

但应该是:

8 Oct at 9:50 AM GMT+06:00
Run Code Online (Sandbox Code Playgroud)

Tim*_*sen 5

构造函数java.util.Date接受自纪元以来的毫秒数,而不是秒:

分配一个 Date 对象并将其初始化为表示自称为“纪元”的标准基准时间(即 1970 年 1 月 1 日 00:00:00 GMT)以来指定的毫秒数。

以下使用 ms 的代码正在运行:

String timestamp = "1538970640000";   // use ms NOT s
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM 'at' hh:mm a z" );
String dateString = formatter.format(new Date(Long.parseLong(timestamp)));

08 Oct at 05:50 AM CEST
Run Code Online (Sandbox Code Playgroud)

演示

您面临的部分问题是您的日期格式省略了年份部分,实际上是 1970 年。