当前位置: 首页 > 面试题库 >

Android中带有日期的Cookie解析问题

东方震博
2023-03-14
问题内容

在我的应用程序中,我通过使用SharedPreferences将其作为长字符串写出到文件中来保留CookieStore。重新读回此String时,我使用regexps从String解析每个cookie及其属性(名称,值,域,路径,版本,到期日期)。解析这些属性时,我通过为每个解析的cookie创建一个新的BasicClientCookie对象来重建一个CookieStore,然后将每个添加到新的CookieStore中。

我在解析到期日期时出现了如下问题:

CookieStore cs = new CookieStore();
SimpleDateFormat sdf = new SimpleDateFormat( "EEE MMM d HH:mm:ss zzz yyyy" );
//name, value, domain, path, expiry, and version are cookie attribute strings that I have parsed
//for(each cookie)
BasicClientCookie bcc = new BasicClientCookie( name, value );
bcc.setDomain(domain);
bcc.setPath(path);
bcc.setVersion(version);
bcc.setExpiryDate( sdf.parse(expiry) );
cs.addCookie(bcc);

在OS 1.5中可以正常工作:SimpleDateFormat对象可以使用以下格式解析到期日期:[到期时间:PDT 2010年4月2日星期五11:23:38]

但是,在OS 2.0及更高版本中,到期日期的格式设置不同:[到期时间:Fri Apr 02 11:28:21 America / Los_Angeles 2010]

时区格式在OS 2.0+中有所不同,因此sdf.parse()方法抛出:W / System.err(10134):java.text.ParseException:无法解析的日期:Fri Apr 02 11:35:34 America / Los_Angeles 2010

现在,根据此内容,我可以使用“ v”格式说明符来解析“ America / Los_Angeles”之类的时区。因此,我尝试使用“ EEE MMM d HH:mm:ss vvv yyyy”格式的字符串的sdf对象,但无法识别“ v”格式的说明符。

E / AndroidRuntime(10194):java.lang.IllegalArgumentException:未知模式字符-‘v’E / AndroidRuntime(10194):位于java.text.SimpleDateFormat.validateFormat(SimpleDateFormat.java:379)

我正在使用1.5 SDK开发项目,而Java版本是1.6。我无法找出为什么无法识别“ v”格式说明符的原因。我正在导入java.text.SimpleDateFormat。那是错的吗?有人认为有更好的方法吗?


问题答案:

为什么不只将日期保留为从纪元以来的毫秒数,然后将其传递给newDate(msecs)



 类似资料:
  • 我从服务器收到了很奇怪的日期格式。它看起来是2017-03-07T15:08:01.513544Z,奇怪的部分是“Z”之前的最后六个字符,因为我在服务器的最多响应中只看到了三个毫秒的符号。我试图用解析它,掩码为yyyy-mm-dd't'hh:mm:ss.ss'z',它适用于除api 16(4.1)之外的所有android版本。在developer.android.com中,我看到了类似.sssxx

  • 问题内容: 如何将类似“ 01-Jan-1995”的字符串解析为Python对象? 问题答案: 总体来说,您可以使用或模块中的函数来分析日期和时间字符串。您的示例可以解析为: 请注意,解析月份的名称是与语言环境相关的。下表显示了用于解析日期和时间的各种格式的指令。

  • 问题内容: 我从服务器收到了JSON数组。我获得一个日期作为时间戳字符串(例如),并且我需要将其解析为我们的日格式。我该怎么做呢?我曾尝试过,但我总是将年份定为1970。 注意:我的JSON格式是UNIX。 在另一个类中,我解析时间戳以显示它: 但是,显示的日期始终是1970。 使用看起来像预期的那样的值(它显示一个现代日期)。 问题答案: 如果您正确解析JSON, 保留您的日期。您正在以Stri

  • 我正在尝试在中解析这些日期,然后获取表示形式。 我阅读了这个类似的答案,并创建了一个方法来解析上述日期并返回具有所需格式的: 然而,没有一个图案是匹配的。我这里缺少什么? 更新:在这两个日期中,我都收到了字符的异常。

  • 问题内容: 我正在尝试解析由tar生成的时间戳,例如“ 2011-01-19 22:15”,但无法计算出time.Parse的时髦API。 以下产生“解析时间“ 2011-01-19 22:15”:超出范围的月份” 问题答案: 请遵循Go 时间包文档中的说明。 布局中使用的标准时间为: 2006年1月2日星期一1:04:05 MST(MST是GMT-0700) 现在是Unix时间。(将其视为。)要

  • 我想在JavaScript中解析没有时区的日期。我试过: