格式化短信收件箱日期为“ 1970年1月1日”

时间:2018-11-01 01:20:15

标签: java android

我正在构建一个使用Android Studio中SMS功能的应用程序,而我想做的是显示SMS发送/接收的日期和时间。我正在使用光标从手机中读取短信收件箱数据,并将其显示在正在执行的列表视图中,但显示为“ Thr Jan 01 10:30:01 LHST 1970”,而不是实际发送的日期/通过电话收到。

我尝试使用此处找到的其他方法来格式化它,但是当我尝试运行它时,它们都会使应用程序崩溃。

enter image description here

这是光标读取并显示在列表视图中的SMS收件箱的代码。

Uri uri = Uri.parse("content://sms/");

ContentResolver contentResolver = getContentResolver();
String phoneNumber = "0409579347";
String sms = "address='"+ phoneNumber + "'";
Cursor cursor = contentResolver.query(uri, new String[] {"_id", "body", "date"}, sms, null, null);

System.out.println ( cursor.getCount() );

while(cursor.moveToNext())
{
    String strbody = "Command: " + cursor.getString( cursor.getColumnIndex("body")) + "\n";

    String date = "\nDate: " + cursor.getString(cursor.getColumnIndex("date")) + "\n";

    Date formatted_date = new Date(cursor.getLong(0));

    String displayDate = new SimpleDateFormat("dd-mm-yyyy").format(formatted_date);

    System.out.println ( strbody );
    System.out.print(displayDate);

    arrayAdapter.add(strbody + formatted_date);
}

1 个答案:

答案 0 :(得分:1)

您可以使用SimpleDateFormat进行尝试。

 SimpleDateFormat mdFormat = new SimpleDateFormat("dd-MMM-yyyy");
 Date formatted_date = new Date();
 String displayDate = mdFormat.format(formatted_date);
 System.out.print(displayDate);