我想在Joda中改变Timestampby 的值:DateTimeZone
DateTime dt = new DateTime(rs.getTimestamp("anytimestampcolumn"),
DateTimeZone.forID("anytimezone"));
Timestamp ts = new Timestamp(dt.getMillis());
Run Code Online (Sandbox Code Playgroud)
因为DateTime,价值是:2013-04-13T22:56:27.000+03:00
因为TimeStamp,价值是:2013-04-13 22:56:27.0
Timestamp 即将到来没有时区差异.
如何使用TimeZone获得正确的时间戳? 例如,我想得到"2013-05-13 01:56:27.0".
提前致谢.
编辑:使用MySQL,列类型TIMESTAMP当然rs是ResultSet.
我正在将项目从Joda-Time过渡到java8的本地时间库,我遇到了麻烦.我一直无法找到持续时间的格式化程序.我想有一个自定义字符串格式,例如,HHH + MM,其中75小时和15分钟的持续时间格式为"75 + 15".通过转换为句点并使用PeriodFormatter,使用Joda-Time很容易,但我无法在Java8中找到这种类型的类.我错过了什么吗?
任何人都知道Java库可以解析时间字符串,例如"30min"或"2h 15min"或"2d 15h 30min",作为毫秒(或某种Duration对象).Joda-Time可以这样做吗?
(我有一个丑陋的长方法来维护这种解析,并希望摆脱它/用更好的工作替换它.)
根据http://wiki.fasterxml.com/JacksonFAQDateHandling,"DateTime可以自动序列化/反序列化,类似于处理java.util.Date的方式."但是,我无法完成此自动功能.有关于此主题的StackOverflow讨论,但大多数涉及基于代码的解决方案,但基于上面的引用,我应该能够通过简单的配置来实现这一点.
根据http://wiki.fasterxml.com/JacksonFAQDateHandling我有我的配置集,以便将日期写为时间戳为false.结果是java.util.Date类型被序列化为ISO 8601格式,但org.joda.time.DateTime类型被序列化为长对象表示.
我的环境是这样的:
Jackson 2.1
Joda时间2.1
Spring 3.2
Java 1.6
我的jsonMapper bean的Spring配置是
@Bean
public ObjectMapper jsonMapper() {
ObjectMapper objectMapper = new ObjectMapper();
//Fully qualified path shows I am using latest enum
ObjectMapper.configure(com.fasterxml.jackson.databind.SerializationFeature.
WRITE_DATES_AS_TIMESTAMPS , false);
return objectMapper;
}
Run Code Online (Sandbox Code Playgroud)
我的测试代码片段是这样的
Date d = new Date();
DateTime dt = new DateTime(d); //Joda time
Map<String, Object> link = new LinkedHashMap<String, Object>();
link.put("date", d);
link.put("createdDateTime", dt);
Run Code Online (Sandbox Code Playgroud)
生成的JSON输出片段是这样的:
{"date":"2012-12-24T21:20:47.668+0000"}
{"createdDateTime": {"year":2012,"dayOfMonth":24,"dayOfWeek":1,"era":1,"dayOfYear":359,"centuryOfEra":20,"yearOfEra":2012,"yearOfCentury":12,"weekyear":2012,"monthOfYear":12 *... remainder snipped for brevity*}} …Run Code Online (Sandbox Code Playgroud) 如何在Joda Time获得正确的实际日期和时间?适当地,我指的是在我的国家的时间.我阅读了官方网页和一些教程 - 关于Locales和时区的内容很多,但我发现它很混乱.我没有找到任何例子如何简单地得到它.
我需要它有两件事:
1)在争论中获得最新信息
2)获得当前时间,我将与出生日期"比较"并计算年龄.
如何设置UTC + 1(布拉格 - 捷克共和国)时的当前时间?
谢谢
我正在从我想要创建新DateTime的文件中提取时间戳,但我想在一小时的楼层创建DateTime(或者任何Joda Period会这样做).
我怎样才能做到这一点?
我正在一个读取文件和处理数据的项目中工作.我在那里工作日期例如:
我找到了包Joda,有点有趣的包但不知道它是否是最容易的.
我能够将第一个示例解析为DateTime对象(Joda)reg-ex和String操作.(例如:用' - '替换空格并将其传递给构造函数.
new DateTime("2012-01-10 23:13:26".replace(' ', '-'))
Run Code Online (Sandbox Code Playgroud)
我猜它有用,但问题在于第二种格式.如何使用这样的输入来提取对象,最好是Joda对象.我确定可以编写一个函数来将格式更改为Joda支持的格式,但是想知道是否会有其他方式(甚至是一些本机Java库)来完成它.
如果有比Joda更好的东西,请告诉我.
谢谢.
我看到针对我发布的Android应用程序的Crittercism(崩溃报告服务)出现了一些错误.跟踪如下:
0 java.io.IOException: Resource not found: "org/joda/time/tz/data/ZoneInfoMap" ClassLoader: dalvik.system.PathClassLoader@45908320
1 at org.joda.time.tz.ZoneInfoProvider.openResource(ZoneInfoProvider.java:211)
2 at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:123)
3 at org.joda.time.tz.ZoneInfoProvider.<init>(ZoneInfoProvider.java:82)
4 at org.joda.time.DateTimeZone.getDefaultProvider(DateTimeZone.java:462)
5 at org.joda.time.DateTimeZone.setProvider0(DateTimeZone.java:416)
6 at org.joda.time.DateTimeZone.<clinit>(DateTimeZone.java:115)
7 at org.joda.time.chrono.GregorianChronology.<clinit>(GregorianChronology.java:71)
8 at org.joda.time.chrono.ISOChronology.<clinit>(ISOChronology.java:66)
9 at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:61)
10 at org.joda.time.DateTime.<init>(DateTime.java:155)
Run Code Online (Sandbox Code Playgroud)
搜索显示这通常是一个编译问题(通常是Joda时间库没有添加到构建路径或其他东西),但那么为什么只有大约4个用户看到这个错误?
我唯一的猜测是有人试图反编译应用程序盗版它(它是一个相当受欢迎的付费应用程序),并在错误地重新编译时看到这个错误.在那种情况下,我很高兴他们看到错误,我不需要担心这一点.
另一个奇怪的事情是导致问题的代码被try/catch包围,它似乎没有抓住它:
try {
DateTime dt = new DateTime();
DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
return fmt.print(dt);
} catch (Exception e) {
//Report issue to Analytics service
}
Run Code Online (Sandbox Code Playgroud)
对我而言,这个错误似乎更不可能出现在Crittercism上,因为它应该被抓住了.有谁能解释一下?
我想比较两个日期,但是我遇到了麻烦.1日期是从java.util.date对象创建的,另一个是手动制作的.以下代码是一个示例:
Date ds = new Date();
DateTime d = new DateTime(ds);
DateTime e = new DateTime(2012,12,07, 0, 0);
System.out.println(d.isEqual(e));
Run Code Online (Sandbox Code Playgroud)
然而,测试结果证明了false.我猜这是因为时间.如何检查这两个日期是否相等(我的意思是年,月,日相同)?