8

一个简单的问题,我找不到答案。我有一个字符串,它是一个时间戳,我想把它变成一个日历对象,这样我就可以在我的 Android 应用程序中显示它。

到目前为止,我所拥有的代码显示了 1970:s 中的一切。

String timestamp = parameter.fieldParameterStringValue;
timestampLong = Long.parseLong(timestamp);
Date d = new Date(timestampLong);
Calendar c = Calendar.getInstance();
c.setTime(d);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int date = c.get(Calendar.DATE);

dateTextView.setText(year + "-" + month + 1 + "-" + date);

更新: 仅供参考,来自服务器的时间戳是:1369148661,这可能是错的吗?

4

2 回答 2

25

您可以使用 setTimeMillis :

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestampLong);
于 2013-05-22T08:10:06.693 回答
21

如果您以秒为单位获得时间,则必须将其乘以 1000 :

String time = "1369148661";
long timestampLong = Long.parseLong(time)*1000;
Date d = new Date(timestampLong);
Calendar c = Calendar.getInstance();
c.setTime(d);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int date = c.get(Calendar.DATE);
System.out.println(year +"-"+month+"-"+date);

输出 :

2013-4-21

小心,因为 的常数Calendar.MONTH是从 0 开始的。所以你应该像这样为用户显示它:

System.out.println(year +"-"+(month+1)+"-"+date);
于 2013-05-22T08:18:04.393 回答