在Android中将字符串转换为格式化日期

时间:2015-06-25 20:18:18

标签: java android

在我的Java Cloud Endpoints API中,我有一些代码来获取当前日期,然后将该日期存储在我的Cloud SQL(MySQL)数据库中:

Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String formattedDate = df.format(c.getTime());
//formattedDate is then inserted into the database

稍后在我的Android Activity中,我查询数据库并将日期作为String看起来像:

2015-06-24 17:53:01

现在我想格式化这个日期,以便在我的Activity的UI上显示06/24/2015。为此,我执行以下操作:

//I get a string like 2015-06-24 17:53:01 passed in from another activity
//which in-turn got it from the MySQL database
datetime = getIntent().getExtras().getString("datetime");

//first convert the string datatime to a date object
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date convertedDate = new Date();
try {
    convertedDate = dateFormat.parse(datetime);
} catch (ParseException e) {
    e.printStackTrace();
}

//then format that date object the way you want
SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
String formattedDate = df.format(convertedDate);

//set the TextView in my Activity to display 06/24/2015
myDateTextView.setText(formattedDate);

这很有效。但是男人做一些简单的事情是一种令人费解的方式。我想知道是否有更有效的方法来做到这一点?

3 个答案:

答案 0 :(得分:3)

您应该将长值表示日期保存到DB中。

long l = c.getTimeInMillis()

和你应该保存的这个值。

回答你的问题如下:

    Date date=new Date(l);
    SimpleDateFormat df2 = new SimpleDateFormat("MM/dd/yyyy");
    String dateText = df2.format(date);
    System.out.println(dateText);

答案 1 :(得分:1)

最简单的方法是在数据库中将日期存储在长值中,之后您可以以非常简单的方式格式化为字符串。

DateFormat.format("MMM dd, yyyy", milliseconds).toString();

答案 2 :(得分:0)

如果您可以将插入的源代码更改为数据库,请尝试在Long中插入时间戳。然后将时间戳转换为日期格式应该是直截了当的。

在Android中,

final String data = DateFormat.format("MM/dd/yyyy",timestamp);