Tag: date

如何将java.sql.Timestamp(yyyy-MM-dd HH:mm:ss.S)格式化为日期(yyyy-MM-dd HH:mm:ss)

好吧,我有一个使用Date的细节,因为我从我的DataBase和变量“fecha”(日期)中获取一个Object来自同一个对象我得到一个java.sql.Timestamp ,所以格式化是毫秒,但我不希望出现毫秒。 所以我需要将我从数据库接收的日期格式化为没有毫秒数的新日期。 这是对象Factura: public class Factura implements java.io.Serializable { private FacturaId id; … private boolean activo; private Date fecha; } 在映射到DB的xml中,我有这个变量“fecha”的代码: 在数据库中,该列是fecha DATETIME 。 当我从我的数据库中获得一个对象Factura时,我得到了这种日期2013-10-10 10:49:29.0但是我希望它没有.0 (毫秒)。 我试过这个( factura是Factura对象): try { SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); Date fechaNueva = null; String fechaStr = factura.getFecha().toString(); int tamaño = fechaStr.length()-2; fechaStr = fechaStr.substring(0, tamaño); //I […]

将java.util.date默认格式转换为Java中的Timestamp

java.util.date的默认格式是这样的“Mon May 27 11:46:15 IST 2013”​​。 如何将其转换为时间戳并以秒计算相同和当前时间之间的差异? java.util.Date date= new java.util.Date(); Timestamp ts_now = new Timestamp(date.getTime()); 上面的代码给出了当前的时间戳。 但是,我不知道如何找到上述字符串的时间戳。

java.util.Date的有效范围?

我可以在java.util.Date中存储的有效值的范围是多少? API没有多说这个。 或者它是否仅支持可以表示为unix时间戳的日期(即1.1.1970之后的日期)? 如果是这样,JDK中是否有一个(可序列化的)类支持之前的日期? 我正在寻找的是db4o中生日字段的类/类型

我应该在Java 8中使用哪个日期类?

Java 8有一整套日期类: java.time.LocalDateTime ; java.time.ZonedDateTime ; java.time.Instant ; java.time.OffsetDateTime ; java.sql.Timestamp ; java.util.Date 。 我已经通过他们的JavaDocs并注意到所有这些类都包含我需要的所有方法。 因此,目前,我可以随机选择它们。 但我想有一些理由说明为什么有6个单独的类,每个类都专门用于特定目的。 技术信息和要求: 输入是String ,它被转换为这些日期格式之一。 我不需要显示时区,但是当我比较两个日期时,能够正确比较纽约和巴黎的时间非常重要。 精确级别是秒,不需要使用毫秒。 所需的操作: 找到最大/最小日期; 按日期排序对象; 计算日期和时间段(两个日期之间的差异); 将对象插入MongoDB并按日期从数据库中检索它们(例如,特定日期之后的所有对象)。 我的问题: 我应该记住哪些方面,以便从性能和可维护性的角度选择这四个选项中的最佳格式? 有什么理由可以避免这些日期类别吗?

使用Hibernate / JPA和JDK Date进行不需要的自动时区转换

我使用Hibernate(4.2)作为我的持久性提供程序,我有一个包含Date字段的JPA实体: @Entity @Table(name = “MY_TABLE”) public class MyTable implements Serializable { . . . @Temporal(TemporalType.TIMESTAMP) @Column(name = “START_DATE”) private Date startDate; public Date getStartDate() { return startDate; } public void setStartDate(Date startDate) { this.startDate = startDate; } . . . } 与START_DATE对应的列定义为START_DATE TIMESTAMP (无时区)。 我在我的应用程序内部使用Joda-Time(2.3)处理日期(始终以UTC格式),并且在持久化实体之前,我使用Joda的DateTime类的toDate()方法来获取JDK Date对象为了遵守映射: public void myMethod(DateTime startDateUTC) { . . . MyTable […]

在Joda-Time中,将DateTime设置为月初

我的API允许库客户端传递日期: method(java.util.Date date) 使用Joda-Time ,从这一天开始,我想提取月份,并迭代本月所有日子。 现在,传递的日期通常是新的Date() – 意味着当前的瞬间。 我的问题实际上是将新的DateMidnight(jdkDate)实例设置为月初。 有人可以用Joda-Time演示这个用例吗?

如何在Java DateUtils.parseDate中识别Zulu时区?

我的日期格式为2008-12-23T00:00:00Z 。 这看起来很像带有祖鲁(UTC)时区的ISO 8601格式 。 我虽然下面的代码会解析它(使用commons-lang ): String pattern = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern(); Date d = DateUtils.parseDate(dateToParse, new String[] { pattern }); 如果我采用相同的模式( yyyy-MM-dd’T’HH:mm:ssZZ )但删除时区,它可以工作。 你知道我如何认识祖鲁时区吗? 我只能访问Java 1.4和Jakarta commons-lang。 没有Joda时间对我来说……

在Hibernate中持久化Joda DateTime而不是Java Date

我的实体目前包含java Date属性。 我开始经常使用Joda Time进行日期操作和计算。 这意味着我不得不将我的日期转换为Joda DateTime对象并再次返回。 所以我想知道,有什么理由我不应该只更改我的实体来存储Joda DateTime对象而不是Java Date对象? 请注意,这些实体是通过Hibernate持久化的。 我找到了jodatime-hibernate项目,但我也在Joda邮件列表上读到它与较新版本的hibernate不兼容。 而且似乎维护得不是很好。 所以我想知道是否最好继续在Date和DateTime之间进行转换,或者是否明智地开始持久化DateTime对象。 我担心的是依赖于维护不善的图书馆。 编辑:请注意,我的目标之一是更好地存储时区信息。 仅存储日期似乎将日期保存在本地时区。 由于我的应用程序可以在全球范围内使用,我也需要知道时区。 Joda Time Hibernate似乎也在用户指南中解决了这个问题。

如何设置UTC时间日历?

这里的海报说日期始终是UTC时间。 但是,如果我创建一个Date(),创建一个日历,并设置日期时间与日期,时间仍然是我当地时间(我不是在UTC时间。我已经通过打印日历的日期来测试这个一个循环,每个循环减去一个小时。这是5月19日晚上11点,在日期变为5月18日之前需要24个循环。现在是UTC时间下午1点,所以如果日历设置正确,那么只需要14个循环。 Date date = new Date(); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); SimpleDateFormat dateFormatter = new SimpleDateFormat(“yyyy-MM-dd”); int index = 0; for(; index > -30; index–) { System.out.println(index); System.out.println(dateFormatter.format(calendar.getTime())); System.out.println(); calendar.add(Calendar.HOUR, -1); }

在Joda Time中查看包含日期范围

我正在使用Joda Time 2.1库。 我写了一个方法来比较给定日期是否在日期范围之间。 我希望它包含在开始日期和结束日期。我使用了LocalDate因为我不想考虑时间部分只是日期部分。 下面是它的代码。 isDateBetweenRange(LocalDate start,LocalDate end,LocalDate target){ System.out.println(“Start Date : ” +start.toDateTimeAtStartOfDay(DateTimeZone.forID(“EST”)); System.out.println(“Target Date : ” +targettoDateTimeAtStartOfDay(DateTimeZone.forID(“EST”)); System.out.println(“End Date : ” +end.toDateTimeAtStartOfDay(DateTimeZone.forID(“EST”)); System.out.println(target.isAfter(start)); System.out.println(target.isBefore(end)); } 上述方法的输出是: Start Date: 2012-11-20T00:00:00.000-05:00 Target Date: 2012-11-20T00:00:00.000-05:00 End Date : 2012-11-21T00:00:00.000-05:00 target.isAfter(start) : false target.isBefore(end) : true 我的问题是target.isAfter(start)为false,即使target日期和start具有相同的值。 我希望target >= start但在这里它只考虑target > start 。 我希望它具有包容性。 这是否意味着isAfter方法专门找到匹配? 我已经浏览了Joda […]