我正在使用achartengine开发android应用程序,我正在制作一个TimeSeries线图。我已将所有变量存储在Arraylist中。因为我需要正确的日期对象插入我正在使用的图表的时间轴,
int count = list.size();
Date[] dt = new Date[count];
for(int i=0;i<count;i++){
long a = Long.parseLong(list.get(i).get("time"));
dt[i] = new Date(a);
}
此处long a
包含时间戳。用上面的代码。我可以将dt
作为09-Apr-2014
,但我需要将日期显示为09-Apr 12:55
。我怎么能这样做,
我尝试使用以下
SimpleDateFormat sdfDate = new SimpleDateFormat("MM-dd HH:mm");
Date now = new Date();
String strDate = sdfDate.format(now);
但是由于strDate是一个字符串,我不能将其用作dt[i] = strDate
,因为一个是Date
而另一个是String
会引发错误。
我该如何解决这个问题?
由于
答案 0 :(得分:3)
你可以这样解决:
dt[i] = sdfDate.parse(strDate);
答案 1 :(得分:3)
如果你真的需要日期字符串,你可以这样做:
int count = list.size();
String[] dt = new String[count];
for (int i = 0; i < count; i++) {
long a = Long.parseLong(list.get(i).get("time"));
Date d = new Date(a);
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd HH:mm");
dt[i] = dateFormat.format(d);
}
或者,如果您确实需要Date数组,只需根据需要随时格式化日期。
答案 2 :(得分:3)
您的问题被误导了 - 您正在展示如何在代码中创建Date对象,但您想要解决的是如何显示它们。
Date
数组的日期精确到毫秒。 toString()
对象的默认Date
方法仅显示当天,这就是您没有看到时间的原因。
UI决定打印时间的格式本身就是UI的责任,因此你应该将Date数组传递给UI(或者直到打印点)并在那里格式化它们。
答案 3 :(得分:3)
DateFormat可以同时执行(日期到字符串表示和返回):
DateFormat formatter = new SimpleDateFormat( "dd-MM-yyyy HH:mm:ss" );
日期到字符串:
Date date = new Date();
String sDate = formatter.format( time );
日期字符串:
Date date = formatter.parse(sDate );
存储日期时,应尽可能精确地存储日期(毫秒)。要将其显示为字符串,您可以使用任何您想要的格式。