Tag: date

错过了在Java 8中修复JDBC日期处理的机会?

任何Java 8 + JDBC专家都能告诉我以下推理是否有问题吗? 而且,如果在众神的秘密中,为什么没有这样做呢? java.sql.Date当前是JDBC用于映射到DATE SQL类型的类型,它表示没有时间且没有时区的日期。 但是这个类设计得非常好,因为它实际上是java.util.Date的子类,它可以存储精确的瞬间,最长可达毫秒。 为了在数据库中表示日期2015-09-13,我们因此被迫选择一个时区,在该时区中将字符串“2015-09-13T00:00:00.000”解析为java.util.Date以获得毫秒value,然后从这个毫秒值构造一个java.sql.Date ,最后在预准备语句上调用setDate() ,传递一个包含所选时区的Calendar,以便JDBC驱动程序能够正确地重新计算日期2015-09 -13来自这个毫秒值。 通过在任何地方使用默认时区,而不是传递日历,可以使此过程更简单一些。 Java 8引入了一个LocalDate类,它更适合DATE数据库类型,因为它不是精确的时刻,因此不依赖于时区。 Java 8还引入了默认方法,这些方法允许对PreparedStatement和ResultSet接口进行向后兼容的更改。 那么,我们还没有错过一个清理JDBC中的混乱而仍然保持向后兼容性的巨大机会吗? Java 8可以简单地将这些默认方法添加到PreparedStatement和ResultSet: default public void setLocalDate(int parameterIndex, LocalDate localDate) { if (localDate == null) { setDate(parameterIndex, null); } else { ZoneId utc = ZoneId.of(“UTC”); java.util.Date utilDate = java.util.Date.from(localDate.atStartOfDay(utc).toInstant()); Date sqlDate = new Date(utilDate.getTime()); setDate(parameterIndex, sqlDate, Calendar.getInstance(TimeZone.getTimeZone(utc))); } […]

如何创建具有特定格式的Date对象

String testDateString = “02/04/2014”; DateFormat df = new SimpleDateFormat(“dd/MM/yyyy”); Date d1 = df.parse(testDateString); String date = df.format(d1); 输出字符串: 2014年2月4日 现在我需要以相同的方式格式化日期d1 ( “02/04/2014” )。

Java:日期解析,为什么我会收到错误

Date date = new Date(); DateFormat dateFormat = new SimpleDateFormat(“yyyy-MM-dd’T’HH:mm:ss.SZ”);//2018-02-05T18:00:51.001+0000 String text = dateFormat.format(date); Date test = dateFormat.parse(text); 前三行很好。 当我尝试再次将字符串解析为日期时,我收到错误。 我怎么解决这个问题? 错误如下所示: Caused by: java.text.ParseException: Unparseable date: “2018-02-07T15:32:13.214+0100” at java.text.DateFormat.parse(DateFormat.java:366) ~[na:1.8.0_151] at TimeRange.parseDateFromIsoString(TimeRange.java:33) ~[classes/:na]

如何在Android中解析“yyyy-MM-dd’T’HH:mm:ss.SSSXXX”日期格式到简单?

如何在Android中解析此日期2018-01-09T11:11:02.0+03:00到dd.MM.yyyy hh:mm格式? 09和11之间的T是什么意思? 谢谢。 我不知道后端开发人员是如何获得这种格式的。 我正在使用Java。

如何创建单个表达式,显示两个日期之间的时差,如年,月,日,小时,分钟,秒

我如何创建一个jasx报告JRExpression ,它可视化两个java.util.Date之间的差异,格式为yy年(s)月(s),hh小时(s),mm分(s),ss秒 java.util.Date startDate java.util.Date endDate JRExpression是一行不允许变量声明的行,但是你可以使用语法boolean ? yes:no条件语句boolean ? yes:no boolean ? yes:no ,对于你不熟悉的人想象一下System.out.println(); 所需输出的示例(如果你有一个很好的解决方案,当不存在时删除单位的描述并考虑单数/复数但如果它是一系列if语句则不是必需的): 2年,8个月,12天,2小时,53分钟,10秒 1小时1分钟 2月2日至3月4日和3月4日 – 4月6日都是“1个月,2天”,夏令时可以忽略 – 感谢@Affe 其他要求: 只能使用jasper报告依赖项 (不包括joda)。 优选的jdk 1.7或更低(如果这只是解决方案,则接受1.8) 没有必要将答案格式化为jasper报表,它可以是一个简单的System.out.println代码(我很乐意稍后编辑你的答案,也可以添加jasper报表表达式代码)。 例 ((endDate.getTime()-startDate.getTime()) / (60 * 60 * 1000)) % 24 + ” hour(s), ” + ((endDate.getTime()-startDate.getTime()) / (60 * 1000)) % 60 + ” minute(s)” 我试过了什么: […]

Java 6中对ISO 8601格式的通用支持

Java 7通过字符X (而不是小写或大写Z )在ISO 8601格式的SimpleDateFormat类中引入了支持。 在Java 6中支持这样的格式需要预处理,因此最好的方法是问题。 这种新格式是Z (大写Z)的超集,另外还有两种变体: “分钟”字段是可选的(即,2位而不是4位时区有效) 冒号字符(’:’)可用于将2位“小时”字段与2位“分钟”字段分开。 因此,正如人们可以从SimpleDateFormat的Java 7文档中看到的那样,以下3种格式现在是有效的(而不仅仅是Java 6中由Z覆盖的第二种格式),当然,等效: -08 -0800 -08:00 正如之前关于支持这种“扩展”时区格式的特殊情况所讨论的那样 ,总是以’:’作为分隔符,将Java 7function向后移植到Java 6中的最佳方法是将SimpleDateformat类子类化并覆盖它parse()方法,即: public Date parse(String date, ParsePosition pos) { String iso = … // Replace the X with a Z timezone string, using a regex if (iso.length() == date.length()) { return null; // Not an ISO […]

年代和周年之间的差异?

Java 8的DateTimeFormatter类有一个方法, ofPattern(String pattern) ,它允许您从Az , az字母的字符串定义格式。 这些例子没有说明y , 年代和Y , 基于周的 年份之间的差异。 它是什么? Symbol Meaning Presentation Examples —— ——- ———— ——- y year-of-era year 2004; 04 Y week-based-year year 1996; 96

Struts2中的日期转换

我想知道如何在Struts2中将String转换为Date 。 我有一个简单的表单,用户以这种格式”yyyy-MM-dd”提供日期。 将Sturts2地图表格提交给bean。 我在日期转换中遇到错误。 我谷歌很多,并声明我们必须使用自定义类型转换器。 我不想为日期转换编写自定义类型转换器。 我认为Struts2中应该有一个简单的数据转换机制,因为数据转换是非常常见的function。 JSP 这是用户输入输入的JSP。 模型类 @Entity @Table(name = “Domain”) public class IdentityProvider implements Serializable { @Id @Basic(optional = false) private String url; private String domainName; private int noOfLicense; private int userActiveDuration; private int activeUsers; private Date licenseExpireDate; private String notes; @GeneratedValue(strategy = GenerationType.IDENTITY) private String domainIdCode; public IdentityProvider(String name, […]

java.util.Date计算天数差异

我试着计算两个日期之间的差异,我注意到了一件事。 仅计算天数时,夏令时的开始时间包含在间隔中,因此结果将在1天内缩短。 为了获得准确的结果,还必须考虑小时值。 例如: SimpleDateFormat format = new SimpleDateFormat(“MM-dd-yyyy”); Date dfrom = format.parse(“03-29-2015”); Date dto = format.parse(“03-30-2015”); long diff = dto.getTime() – dfrom.getTime(); System.out.println(diff); System.out.println(“Days: “+diff / (24 * 60 * 60 * 1000)); System.out.println(“Hours: “+diff / (60 * 60 * 1000) % 24); 输出: 82800000 Days: 0 Hours: 23 有人有更好的解决方案吗?

在Java中将字符串解析为日期

我正在尝试将字符串解析为日期,这就是我所拥有的: SimpleDateFormat sdf = new SimpleDateFormat(“EEE MMM dd yyyy HH:mm:ss zZ (zzzz)”); Date date = new Date(); try { date = sdf.parse(time); } catch (ParseException e) { e.printStackTrace(); } 要解析的字符串是这样的: Sun Jul 15 2012 12:22:00 GMT+0300 (FLE Daylight Time) 我关注了http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html 很确定我已经完成了本书的所有工作。 但它给了我ParseException 。 java.text.ParseException: Unparseable date: “Sun Jul 15 2012 12:22:00 GMT+0300 (FLE Daylight Time)” […]