Tag: datetime

将Java Date转换为UTC String

java.util.Date toString()方法以本地时区显示日期。 有几种常见情况我们希望以UTC格式打印数据,包括日志,数据导出和与外部程序的通信。 在UTC中创建java.util.Date的String表示forms的最佳方法是什么? 如何用更好的格式替换juDate的toString()格式,这是不可排序的(谢谢@JonSkeet!)? 附录 我认为以自定义格式和时区打印日期的标准方法非常繁琐: final Date date = new Date(); final String ISO_FORMAT = “yyyy-MM-dd’T’HH:mm:ss.SSS zzz”; final SimpleDateFormat sdf = new SimpleDateFormat(ISO_FORMAT); final TimeZone utc = TimeZone.getTimeZone(“UTC”); sdf.setTimeZone(utc); System.out.println(sdf.format(date)); 我正在寻找一个单线像: System.out.println(prettyPrint(date, “yyyy-MM-dd’T’HH:mm:ss.SSS zzz”, “UTC”));

如何在JAVA中将String转换为Date时间格式?

如何将03/24/2013 21:54forms的字符串转换为java中的Date对象?

如何将日期时间从一个时区转换为另一个时区

记录将根据美国的时区保存,但如果我想向用户显示相同的记录,则应将服务器日期时间(美国时区)转换为用户的时区的用户日期时间

GPS时间表示库

我正在寻找一个处理GPS时间转换的Java库。 GPS时间有一个1980年1月6日的时代,并没有闰秒,因此它与更标准的时间表示不同。 以下是维基百科的相关说明: 虽然大多数时钟与协调世界时(UTC)同步,但卫星上的primefaces钟设置为GPS时间。 不同之处在于未校正GPS时间以匹配地球的旋转,因此它不包含闰秒或定期添加到UTC的其他校正。 GPS时间设定为与1980年的协调世界时(UTC)相匹配,但后来发生了分歧。 缺少校正意味着GPS时间与国际primefaces时(TAI)(TAI-GPS = 19秒)保持恒定的偏移。 对板载时钟执行周期性校正以校正相对论效应并使它们与地时钟保持同步。 GPS导航消息包括GPS时间和UTC之间的差异,由于闰秒在2008年12月31日添加到UTC,因此截至2009年为15秒。接收器从GPS时间减去此偏移以计算UTC和特定时区值。 在收到UTC偏移消息之前,新的GPS单元可能无法显示正确的UTC时间。 GPS-UTC偏移场可以容纳255闰秒(8位),考虑到地球自转的当前变化速率(大约每18个月引入一闰秒),应足以持续到大约2300年。 与公历的年,月,日格式相反,GPS日期表示为星期数和秒周数。 周数作为C / A和P(Y)导航消息中的十位字段发送,因此每1,024周(19.6年)它再次变为零。 GPS周0从1980年1月6日00:00:00 UTC(00:00:19 TAI)开始,周数在1999年8月21日23:59:47 UTC第一次再次变为零(00 :00:19 TAI,1999年8月22日)。 要确定当前的格里高利日期,必须为GPS接收器提供大致日期(在3,584天内)以正确转换GPS日期信号。 为了解决这个问题,现代化的GPS导航消息使用13比特的场,其仅每8,192周(157年)重复,因此持续到2137年(GPS周零后157年)。 我宁愿不必自己动手; 我没有在Joda时间看到任何表明它可以处理GPS编码日期的东西..有没有办法扩展它?

Java 8 LocalDateTime正在解析无效日期

我想在客户端validation日期,所以我写了下面的代码。 但是我没有得到exception,而是获得了2月31日日期字符串的正确日期对象,这显然是无效日期。 public class Test { public static void main(String[] args) { String dateFormat = “HH:mm:ss MM/dd/yyyy”; String dateString = “11:30:59 02/31/2015”; DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(dateFormat, Locale.US); try { LocalDateTime date = LocalDateTime.parse(dateString, dateTimeFormatter); System.out.println(date); } catch (Exception e) { // Throw invalid date message } } } 输出 :2015-02-28T11:30:59 有谁知道为什么LocalDateTime正在解析这个日期而不是抛出exception。

适用于地理位置不同的用户的日期操作/存储的Java最佳实践

我已经阅读了关于日期操作的所有其他Q / A,但它们似乎都没有给我一个满意的答案。 我有一个地理位置不同的用户项目,在一些类和数据中使用Date 。 问题是我正在寻找一种有效的方法来操纵各自时区中不同用户的日期,大多数答案建议使用Joda库进行Date操作,这还不太明白,因为我还没有发现任何你不能用传统的Java做的操作,所以如果有人可以解释我用Joda做些什么不能用传统的Java做,那么我可以考虑使用它。 我终于找到了使用System.currentTimeMillis()将日期保存到数据库(任何数据库)的方法。 这样可以避免让我担心使用数据库存储日期的时区。 如果我想查询数据库中的特定日期或日期范围,我会使用我想要查询的Date的long值来执行查询: SELECT * FROM table1 WHERE date1>=1476653369000 在检索ResultSet我会使用请求数据的用户的时区将从数据库检索到的long值格式化为可读Date 。 Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(resultSet.getLong(1)); cal.setTimeZone(TimeZone.getTimeZone(“Asia/Calcutta”)); Date myDate = cal.getTime(); 根据我读过的一些观点,有些人强调说存储System.currentTimeMillis()肯定不是最好的做法,但是,出于某种原因,他们都错过了为什么不推荐这样做。 我错过了什么吗? 这是否会导致转换Long->Date / Date->Long的性能问题? 在数据库中使用Long而不是Date时是否有任何用例无法实现? 有人可以发布关于此的理由解释吗? 另一方面,假设我继续使用Date值在数据库中存储日期,有没有办法避免在处理数据库Date时担心时区? 提前致谢。

Java:从服务器而不是系统时钟获取当前日期和时间

在我的Java程序中,我需要创建当前时刻的实例。 我用 Date date = new Date(); 这根据主机的系统时钟给出了当前日期和时间。 有什么方法可以从在线服务器获取当前日期和时间吗? 也许是世界时间服务器? 我看过这篇post ,它描述了我想要的东西,但我担心我需要的帮助比那里提供的更多。 简而言之,我想获得一个不依赖于主机系统时钟的日期和时间。 谢谢!

将整数时间戳转换为java日期

我有整数forms的时间戳 1333125342 我可以使用SQL转换它: select DATEADD(ss, FlOOR(1333089223/86400)*86400, ‘1970-01-01 00:00:00’) AS Date 如何在java中转换它? 这样它会返回值: 3/30/12 12:18:43 PM

选择12:00时比较时间不正确

我正在创建一个预订系统,我不想让用户在开始时间11:00和结束时间09:00(过去)预订(我正在使用24小时制)。 我有两个充满字符串的combobox,作为开始和结束时间(09:00,10:00,11:00,12:00,13:00 ……) 我有这个代码: String start = (String) startTime.getSelectedItem(); String end = (String) endTime.getSelectedItem(); try { if(new SimpleDateFormat(“hh:mm”).parse(start).before(new SimpleDateFormat(“hh:mm”).parse(end))){ System.out.println(“test1”);// future date – good }else{ System.out.println(“fail2”);// old date – bad } } catch (ParseException ex) { System.out.println(“error”); } 除非我选择开始/结束时间为12:00,否则此操作非常有效。 程序输出与它应该输出的相反,我不确定为什么。 如果我选择开始时间14:00和结束时间12:00,程序将输出fail2(良好输出), 如果我选择开始时间09:00和结束时间12:00程序将输出fail2(应该是test1), 如果我选择开始时间12:00和结束时间10:00,程序将输出test1(应该是fail2), 如果我选择开始时间12:00和结束时间15:00,程序将输出test1(良好输出) 这种类型的问题只发生在我选择12:00时。

计算Java中日期的差异

我觉得Java(或java.util库)没有内置函数来计算日期差异很有趣。 我想从另一个日期中减去一个日期以获得它们之间的经过时间。 做这个的最好方式是什么? 我知道简单的方法是以毫秒为单位取时间差,然后将其转换为天。 但是,我想知道这是否适用于所有情况(夏令时等)。