在我的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);
这很有效。但是男人做一些简单的事情是一种令人费解的方式。我想知道是否有更有效的方法来做到这一点?
答案 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);