Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分析时间戳时出错_Java_Android_Datetime_Google Docs - Fatal编程技术网

Java 分析时间戳时出错

Java 分析时间戳时出错,java,android,datetime,google-docs,Java,Android,Datetime,Google Docs,因此,我正在修改一个开源Google I/O开源应用程序(2010),当我尝试使用自定义Google电子表格同步应用程序时,出现以下错误,相同的标题不同的数据(似乎与默认Google电子表格同步良好) “同步错误:解析时间戳时出现问题:java.text.ParseException:不可解析的日期:“null 2010 10:45am-0700” 这是抛出错误的Java代码 private static long parseTime(String date, String time)

因此,我正在修改一个开源Google I/O开源应用程序(2010),当我尝试使用自定义Google电子表格同步应用程序时,出现以下错误,相同的标题不同的数据(似乎与默认Google电子表格同步良好)

“同步错误:解析时间戳时出现问题:java.text.ParseException:不可解析的日期:“null 2010 10:45am-0700”

这是抛出错误的Java代码

     private static long parseTime(String date, String time) throws HandlerException {
    final String composed = String.format("%s 2010 %s -0700", date, time);
    try {
        return sTimeFormat.parse(composed).getTime();
    } catch (java.text.ParseException e) {
        throw new HandlerException("Problem parsing timestamp", e);
    }
    }
以下是它试图解析的信息(Atom)的链接: 我的数据

谷歌数据 "


我不明白为什么我会犯这个错误。任何帮助都将不胜感激。

请检查传入此方法的参数日期。它似乎是
null
,这显然不是一个有效日期。

这就是如何处理时间和时间:

Calendar c = Calendar.getInstance();

c.set(Calendar.DAY_OF_MONTH, dp.getDayOfMonth());
c.set(Calendar.MONTH, dp.getMonth());;
c.set(Calendar.YEAR, dp.getYear());

long l = c.getTime().getTime();

因为@henrik已经发布了您当前的实际问题,我将根据您发布的代码给出一些建议:

  • 您使用的是
    sTimeFormat
    ,它必须至少是一个
    静态
    变量,并且可能也是
    最终
    (在本文中通常应该是)。但是,您没有遵循命名约定-它可能应该命名为
    TIMESTAMP\u FORMATTER
    (如果您只需要获取实际日期,请使用
    TIMESTAMP\u PARSER
    )。此外,尽管您不太可能在android设备上使用多线程,但请注意
    DateFormat
    SimpleDateFormat
    而不是threadsafe-标准做法是为每次使用构造一个副本
  • 您正在手动格式化时间戳本身,然后再尝试解析它。没有意义-您应该使用现有数据(直接来自xml或呈现的html),并提供自定义格式字符串
  • 您正在设置日期的两部分,年份和时区。至少,应该将其移到实际解析块之外。您可能应该编写一个
    setToCanonicalDate
    方法或其他方法,从解析中获取输出并将其设置为有效的年份和时区。你把这个应用程序发布到了什么程度?我住在太平洋时区——你的违约对我没有任何好处

  • -1-虽然这是真的,但在这里似乎并不相关。另外,如果
    dp
    是一个日期,那么您使用的是不推荐的(或应该的)方法。这也是我的第一个想法,应用程序读取的列中包含日期,但这些都不是空的。