Tag: datetime

使用Joda-Time为Mongo插入形成正确的ISODate

我正在尝试更新需要ISODate格式的mongo中的日期字段。 在mongo中,它看起来像这样: “crDt” : ISODate(“2013-08-19T17:21:57.549Z”) 我正在使用的Java框架限制使用字符串作为我的测试参数,所以我试图将该字符串与DateTimeFormatter一起使用,以使其进入正确的ISODateTimeFormat ,然后将其传递给mongo。 我不能只传入一个看起来像我上面的字符串。 试图这样做搞砸了mongo的领域。 我正在使用的Joda-Time代码的相关位如下所示: //I can’t get this right. String crDt = “2013-01-19T15:28:58.851Z”; DateTimeFormatter parser = ISODateTimeFormat.dateHourMinuteSecondMillis(); parser.parseDateTime(crDt); // this method updates the record in mongo. This method totally works, so no // point in pasting it here, I just can’t get the parser object correct to be // […]

如何使用DateTimeFormatter解析非标准月份名称

我需要解析(德语)以下列forms的日期: 10. Jan. 18:14 8. Feb. 19:02 1. Mär. 19:40 4. Apr. 18:55 2. Mai 21:55 5. Juni 08:25 5. Juli 20:09 1. Aug. 13:42 […] 如您所见,如果月份超过4个字符,则会删除月份名称。 甚至更奇怪,不要问我为什么,三月份缩短为Mär. 虽然全名都是März 。 我如何用java.time解析这个? (日期的格式基于创建日期列表的Android设备的本地化。但是,我没有在Android上解析它) 我的方法是创建一个这样的DateTimeFormatter : DateTimeFormatter.ofPattern(“d. MMMM HH:mm”).withLocale(Locale.GERMAN); // or DateTimeFormatter.ofPattern(“d. MMMMM HH:mm”).withLocale(Locale.GERMAN); 但MMMM和MMMMM模式都不适合缩短的日期。 当然,我可以有以下模式d. MMM. HH:mm d. MMM. HH:mm d. MMM. HH:mm以匹配缩短的月份,但后来我无法匹配3个月和4个月的月份。 我知道我可以有两个格式化程序( MMM. and […]

考虑夏令时,将本地时间转换为UTC时间,反之亦然

我知道如何将本地时间转换为UTC时间,反之亦然。 但是,在执行此操作时,我对夏令时(DST)处理非常困惑。 所以任何人都可以回答以下问题: 1.在时区之间转换时,java内部处理DST吗? 2.在时区之间转换时我需要做些什么? 3.更清楚地解释这个问题的任何好文章? 提前致谢。

在Java 8中使用TemporalAmount或TemporalUnit有什么区别?

我在Java 8中编写了一些使用时间算术的代码。 我意识到我可以在不同的方面实施。 让我们看看下面的简单代码。 当然它是相同的结果,但我混淆了哪种方式主要应用或最有效地在Java 8中进行算术运算? LocalTime time = LocalTime.now(); // 1st way LocalTime plusOp = time.plus(Duration.ofMinutes(10L)); // 2nd way LocalTime plusOp2 = time.plus(10L, ChronoUnit.MINUTES); System.out.println(plusOp); System.out.println(plusOp2); // 3. way simply time.plusMinutes(10L); 提前致谢。

用Java减少日期

我想从当前时间开始前一天(24小时)。 例如,如果当前时间是Date currentTime = new Date(); 2011-04-25 12:15:31:562 GMT 如何确定时间即 2011-04-24 12:15:31:562 GMT

Joda在GMT时区解析ISO8601日期

我有一个ISO 8601日期,让我们说: 2012-01-19T19:00-05:00 我的机器时区是GMT+1 我正在尝试使用joda来解析它并将其转换为相应的GMT日期和时间: DateTimeFormatter simpleDateISOFormat = DateTimeFormat.forPattern(“yyyy-MM-dd’T’HH:mmZZ”); creationDate = simpleDateISOFormat.withZone(DateTimeZone.UTC) .parseDateTime(date + “T” + time) .toDate(); 现在我期待的结果是Fri Jan 20 00:00:00 CET 2012 相反,我得到: Fri Jan 20 01:00:00 CET 2012 我相信这是因为我在时区GMT + 1 。 有没有办法解析日期伪装在不同的时区? 编辑:基本上问题是当我调用toDate()方法时。 该方法将DateTime转换为我需要做的Date ,但我在本地时间转换它。 有人知道一种不会施加此限制的转换方法吗?

如何将DateTime转换为Date

如何将Date转换为DateTime ,反之亦然? 例如 Date dt = new Date(); 现在我想把它转换为DateTime 。 也 DateTime dtim = new DateTime(); 现在我想将它转换为Date。

解析日期时无法从TemporalAccessor获取ZonedDateTime

使用Java 1.8.0_51以下代码(取自Unable从TemporalAccessor获取OffsetDateTime ) DateTimeFormatter formatter = DateTimeFormatter.ofPattern(“yyyyMMdd”).withZone(ZoneId.of(“Europe/Berlin”)); OffsetDateTime offsetDateTime = ZonedDateTime.parse(“20151113”, formatter).toOffsetDateTime(); System.out.println(offsetDateTime.format(DateTimeFormatter.ISO_DATE)); 抛出exception: java.time.format.DateTimeParseException: Text ‘20151113’ could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {},ISO,Europe/Berlin resolved to 2015-11-13 of type java.time.format.Parsed at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1918) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1853) at java.time.ZonedDateTime.parse(ZonedDateTime.java:597) 这次我做错了什么?

如何使JsonGenerator漂亮的日期和日期时间值?

我正在使用此方法将任何对象转换为json字符串: private String objectToJson(Object object) throws IOException { // write JSON StringWriter writer = new StringWriter(); ObjectMapper mapper = new ObjectMapper(); final JsonGenerator jsonGenerator = mapper.getJsonFactory().createJsonGenerator(writer); jsonGenerator.setPrettyPrinter(new DefaultPrettyPrinter()); mapper.writeValue(jsonGenerator, object); return writer.toString(); } 当正在打印的对象包含java.util.Date或jodatime的DateTime字段时,打印值是自纪元以来的毫秒数。 相反,我希望用标准的“HH:MM:SS”符号来打印它们。 我该怎么做呢?

Java:插入表日期时间数据

我试图在MS-SQL数据库中插入一个变量当前的日期和时间。 我用这种格式: DateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss.SSS”); Calendar cal = Calendar.getInstance(); System.out.println(dateFormat.format(cal.getTime())); 我得到了这个结果2013-01-28 09:29:37.941 我在数据库中的字段是定义datetime ,正如我在其他具有相同字段的表中看到的那样,日期和时间的编写方式与2011-07-05 14:18:33.000完全相同。 我尝试使用我在java程序中执行的查询插入数据库,但是我收到此错误 SQLexception:状态:S0003消息:将varchar数据类型转换为值的日期时间数据类型超出范围。 错误:242 我的查询是这样的: query = “INSERT INTO Companies CreatedOn”+ “VALUES (‘” + dateFormat.format(cal.getTime()) + “‘)” 但我不明白我做错了什么。