- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
将字符串转换为 Joda DateTime 对象时出现问题。我不明白我做错了什么。我正在按照 StackOverflow 上其他线程的说明进行操作,但以下代码不起作用。它抛出这个异常:
Exception in thread "main" java.lang.NullPointerException
at org.joda.time.format.DateTimeFormatterBuilder$NumberFormatter.parseInto(DateTimeFormatterBuilder.java:1330)
at org.joda.time.format.DateTimeFormatterBuilder$Composite.parseInto(DateTimeFormatterBuilder.java:2741)
at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:853)
at co.restclient.ExpiringCookie.<init>(ExpiringCookie.java:41)
at co.restclient.ExpiringCookie.main(ExpiringCookie.java:29)
这是代码。
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import org.joda.time.DateTime;
import org.joda.time.Duration;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
/*
* This class stores a cookie value and can tell when its expired by its timestamp
*/
public class ExpiringCookie {
public static DateTimeFormatter fmt = DateTimeFormat.forPattern( "dd/MM/YYYY HH:mm:ss" );
public static File cookieJar = new File("cookie.xml");
public String singleCookie;
DateTime startTime;
DateTime currentTime;
boolean isExpired = false;
public static void main( String[] args ) {
ExpiringCookie ec = new ExpiringCookie( "xxxxxxx" );
System.out.println( "Age of cookie: " + ec.timePassed().getMillis() );
}
public ExpiringCookie( String cookie ) {
currentTime = new DateTime();
Properties properties = new Properties();
if ( cookieJar.exists() ) {
try {
properties.load( new FileInputStream( cookieJar ) );
new DateTime();
//startTime = DateTime.parse( properties.getProperty( "startTime" ), DateTimeFormat.forPattern( "dd/MM/YYYY HH:mm:ss" ) );
startTime = fmt.parseDateTime( properties.getProperty( "startTime" ) );
singleCookie = properties.getProperty( "cookie" );
} catch ( FileNotFoundException e ) {
e.printStackTrace();
} catch ( IOException e ) {
e.printStackTrace();
}
} else {
properties.setProperty( "startTime", fmt.print( currentTime ) );
properties.setProperty( "cookie", cookie );
startTime = new DateTime( currentTime.plusSeconds(-1) );
try {
properties.storeToXML( new FileOutputStream( cookieJar ), "Stores cookie for API requests" );
} catch ( FileNotFoundException e ) {
e.printStackTrace();
} catch ( IOException e ) {
e.printStackTrace();
}
}
}
public Duration timePassed() {
return new Duration( startTime, currentTime );
}
public boolean isExpired() {
return isExpired;
}
}
cookie.xml文件内容是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Stores cookie for API requests</comment>
<entry key="cookie">xxxxxxx</entry>
<entry key="startTime">03/01/2014 10:00:08</entry>
</properties>
最佳答案
第 41 行中的表达式 properties.getProperty( "startTime")
似乎返回 null
。
检查 JavaDoc 中的 Properties#getProperty
它说
Searches for the property with the specified key in this property list. If the key is not found in this property list, the default property list, and its defaults, recursively, are then checked. The method returns null if the property is not found.
因此,文件 data/cookie.xml
中的键 startTime
似乎没有值
我假设您使用最新的joda time版本2.3。 In line 1330 text.length()
被调用。正如我上面假设的,如果 properties.getProperty( "startTime")
返回 null,您将获得 NPE。
解决方案:确保文件data/cookie.xml
中的键startTime
有一个值
关于java - 将字符串转换为 Joda DateTime 对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20909932/
我是 grails 的新手。我正在使用 joda 插件来获取日期和时间。所以我在单独的列中显示日期和时间。现在我想使用条件搜索日期。 我在 gsp 页面中使用以下代码来搜索日期。
我试图在执行更多计算之前简单地将 TimeZone 信息添加回 LocalDate。 LocalDate 来自使用 ObjectLab LocalDateCalculator 将天数添加到现有 Dat
所以我在使用 JodaTime 年表 IslamicChronology 解析日期时遇到问题,因此编写了一个小示例来演示我的问题。 代码如下: import org.joda.time.Chronol
当我启动我的应用程序时,virgo 会抛出这样的异常: [2015-09-05 11:27:53.254] TCP Connection(2)-127.0.0.1 Installation of
我使用 Spring 从 Web API rest API 检索 JSON 数据,使用 Jackson Joda 模块反序列化 ISO 日期,并将其转换为 Joda DateTime。 Spring
在 Android 设备 (7.0) 上,出现此崩溃: Fatal Exception: org.joda.time.IllegalInstantException: Illegal instant
我需要将 GMT 转换为亚利桑那时间。亚利桑那州目前有 MST(夏令时关闭)。 但是在 Joda Time DateTimeZone 代码中,MST 已映射到 America/Denver: map.
大家早上好。 我想帮助您了解如何使用 1.2.1.1 版本的 Joda Time 完成 org.joda.time.DateTime 到 java.util.Date 的转换。 为什么选择 Joda
试试这个: @Type(type = "org.jadira.usertype.moneyandcurrency.joda.PersistentMoneyAmountAndCurrency") pri
尝试使用 Joda 将包含日期字符串的 JSON 字符串反序列化为 POJO 时遇到异常。 我将 Jackson2 与 Spring 和 Robospice 一起使用。 我遇到以下异常: Could
我有一个招摇的OpenAPI YAML文件,我想使用gradle-swagger-generator-plugin生成Java 这是我的config.json { "useRxJava2": tr
我想使用以下 MDX 语句: with member [x] as now()->plusMonths(1)->withDayOfMonth(1)->minusDay(1) select [x] on
System.out.println( PeriodFormat.getDefault().print(Period.hours(1).plusMinutes(30).plusSeconds(60))
我正在使用 Joda-Time Duration 来获取两个 DateTime 之间的持续时间: DateTime startTimeDate = new DateTime(startTimeDate
当我运行以下代码片段时: import org.joda.time.DateTime; import org.joda.time.DateTimeZone; import java.sql.Times
我正在尝试在 Joda DateTime 中转换毫秒。米利斯是 1338501600000我使用了在线转换器和其他库,所有结果都是 1338501600000 millis 是 Fri Jun 01
我尝试使用以下代码,但收到错误格式无效:“12/11/2013”: String dFrom = ps.utils.gv(request, "dFrom"); String dTo = ps.ut
我正在尝试使用 Joda-Time 的持续时间类来计算两天之间的确切天数差异。这意味着我希望结果是 25.48 天,而不是仅仅 25 天。现在我有: private static final doub
有没有隐藏的方法来获得 Joda-Time以分钟为单位的时间段(或任何其他) 现在我做的是: (period.getHours()*60 + period.getMinutes() + roundTw
有谁知道如何解析日期,例如:Mon Aug 04 16:07:00 CEST 2014使用 Joda 的 DateTime 格式化程序转换为 dd/MM/YYYY HH:MM:SS。我已经尝试过了:
我是一名优秀的程序员,十分优秀!