【问题标题】:java date and time from timestamp来自时间戳的java日期和时间
【发布时间】:2014-05-22 11:36:42
【问题描述】:

我正在使用 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

我该如何解决这个问题?

谢谢

【问题讨论】:

  • strDate 是一个字符串 请显示一个日期示例
  • 我不明白你的问题。但如果我理解正确,那么Date[] dt = new Date[count];String strDate 显然不是同一数据类型。由于strDate 会将时间戳转换为正确的日期格式,但它将存储在字符串中。

标签: java android date timestamp achartengine


【解决方案1】:

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 );

存储日期时,应尽可能精确地存储它(毫秒)。为了将其显示为字符串,您可以使用任何您想要的格式。

【讨论】:

    【解决方案2】:

    您的问题被误导了 - 您正在展示如何在代码中创建 Date 对象,但您想要解决的是如何展示它们。
    Date 数组的日期精确到毫秒。 Date 对象的默认 toString() 方法仅显示日期,这就是您看不到时间的原因。
    决定要打印的时间格式本质上是 UI 的责任,因此您应该将 Date 数组传递给 UI(或直到打印点)并在那里对其进行格式化。

    【讨论】:

    • 好吧,如果我必须格式化和打印日期,你可能是正确的,但由于 achartengine 并不总是接受我写的内容,我需要匹配他们的标准。我将日期显示为 09-Apr-2014 但我无法将日期格式化为显示 9 Apr 12:55 。所以我来我的问题是误导。
    • 在这种情况下,您可能需要考虑设置不同的渲染器,然后自己添加标签或配置这个。你现在用的是哪个?
    • 我正在使用XYMultipleSeriesRenderer
    • 我在图表渲染端将日期格式化为dt[i] = sdfDate.parse(strDate);ChartFactory.getTimeChartView(getBaseContext(), dataset, multiRenderer,"dd-MMM HH:mm");
    【解决方案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 数组,只需根据需要即时格式化日期。

    【讨论】:

    • 好吧,如果我只需要字符串中的日期,实际上你是正确的,但是,如果你看到我的问题,在第二行我写了`我需要正确的日期对象插入时间轴我的图表`,所以我显然只需要日期对象而不是任何字符串。我坚持这个问题。
    • @BasilBourque:问题是关于以正确的格式显示日期和时间。可能是我无法让你清楚。
    【解决方案4】:

    你可以这样解决:

    dt[i] = sdfDate.parse(strDate);
    

    【讨论】:

      猜你喜欢
      • 2011-03-23
      • 1970-01-01
      • 2013-11-03
      • 2017-09-01
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      相关资源
      最近更新 更多