我从android中的sms消息中获取日期作为时间戳,以秒为单位或以毫秒为单位。我需要使用java将其显示为标准日期和时间。
int date = (cursor.getColumnIndex(SmsReceiver.DATE));
这会返回一些数字,如1308114404722。
使用此号码并显示为当前日期的过程是什么
答案 0 :(得分:6)
int date = ...
Date dateObj = new Date(date);
要格式化Date
对象,请使用例如SimpleDateFormat
:
DateFormat df = new SimpleDateFormat("dd-MM-yyyy");
String text = df.format(dateObj);
此外,您应该在long
而不是int
中存储自纪元数值以来的毫秒数,因为int
不够大。 (实际上,数字1308114404722甚至不适合32位int
)。
答案 1 :(得分:1)
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm dd.MM.yyyy");
Date date = new Date(1308114404722);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
答案 2 :(得分:1)
你可以这样使用
public static java.util.Date toDate(java.sql.Timestamp timestamp) {
long millisec = timestamp.getTime() + (timestamp.getNanos() / 1000000);
return new Date(millisec);
}
答案 3 :(得分:0)
尝试:
DateFormat df = DateFormat.getInstance();
String dateStr = df.format( new Date( date ) );
答案 4 :(得分:0)
我认为这是Epoch Timestamp将其转换为人类可读的形式使用
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));
希望这可以用于转换此值: 1308114404722
星期三,2011年6月15日05:06:44 GMT
答案 5 :(得分:0)
您可以轻松地转换时间戳。我乘以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);
您可以在documentation
中探索更多格式选项。答案 6 :(得分:-1)
要将您获得的unix时间戳转换为正常日期,请使用以下代码段:
//这里的日期应该很长
long date =(cursor.getColumnIndex(SmsReceiver.DATE));
String standardDate = DateFormat.getDateInstance()。format(new Date(date);