我从android中的短信中获取日期,作为时间戳,从epoch开始以秒或毫秒为单位。我需要使用java将其显示为标准日期和时间。
int date = (cursor.getColumnIndex(SmsReceiver.DATE));
这会返回一些数字,如1308114404722。
使用这个数字并显示为当前日期的过程是什么
int date = ...
Date dateObj = new Date(date);
要格式化Date
对象,请使用例如SimpleDateFormat
:
DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
String text = df.format(dateObj);
此外,您应该在long
中存储自epoch值以来的毫秒数,而不是在int
中,因为int
不够大。(事实上,数字1308114404722甚至不适合32位的int
)。
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm dd.MM.yyyy");
Date date = new Date(1308114404722);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
您可以使用类似的
public static java.util.Date toDate(java.sql.Timestamp timestamp) {
long millisec = timestamp.getTime() + (timestamp.getNanos() / 1000000);
return new Date(millisec);
}
尝试:
DateFormat df = DateFormat.getInstance();
String dateStr = df.format( new Date( date ) );
我想这是Epoch时间戳,可以使用将其转换为人类可读的形式
int date = (cursor.getColumnIndex(SmsReceiver.DATE));
String date = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date (date*1000));
希望这能像转换这个值一样起作用:1308114004722
时间是2011年6月15日星期三格林尼治标准时间05:06:44
您可以轻松地转换时间戳。我乘以了1000,因为有些人在保存时间戳时通常会除以1000。你可以试试1000,也可以不试试。
DateFormat format = new SimpleDateFormat("h:mm a");
Date date = new Date();
date.setTime(Long.parseLong(YOUR_INT_OR_LONG_TIMESTAMP)*1000);
String readableTime = format.format(date);
您可以在文档
要将您获得的unix时间戳转换为正常日期,请使用以下代码片段:
//这里的日期应该是一个长
长日期=(cursor.getColumnIndex(SmsReceiver.date));
String standardDate=DateFormat.getDateInstance().format(new Date(Date);