问题标签 [java.util.date]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Date() 对象不一致。月日年都错了
现在是 3/15/11,当我调用一个新的日期对象时:
我得到回报
- 月份为 2 (
getMonth()
), - 日期为 2 (
getDay()
) - 年份 (
getYear()
) 为 111。
这个约定有什么理由吗?
java - 月份字段的值 0 无效。同时将 util.date 转换为 XMLgregoriandate?
我正在将 java.util.Date 转换为 XMLGregorianDate。
当我在控制台上打印 My util date 时,它显示:
日期:2011-01-25 20:33:46.54
但转换后,当我尝试使用它时,出现以下异常:org.springframework.ws.soap.client.SoapFaultClientException:月份字段的值无效 0。
同样有趣的是,当我显示 util Date.getYear() 和 getMonth() 方法(不推荐使用的方法仅用于在控制台上显示日期)时,控制台上的输出是:
年:111 月:0
为什么会这样?谁能说出这背后的原因?先感谢您。
java - 将 java.util.Date 转换为字符串
我想将一个java.util.Date
对象转换为String
Java 中的一个。
格式是2010-05-30 22:15:52
java - 将 java.util.Date 转换为 org.joda.time.LocalDateTime 时出现问题
有了这个日期或以下日期,一切正常:
new LocalDateTime(new Date(0,0,1,2,30))
— 1900-01-01T02:30:00.000new LocalDateTime(new Date(111,4,24,19,51))
— 2011-05-24T19:51:00.000
但是之前的日期有一些无法理解的东西:
new LocalDateTime(new Date(0,0,1,2,29,50))
— 1900-01-01T01:59:50.000new LocalDateTime(new Date(0,0,1))
— 1899-12-31T23:30:00.000new LocalDateTime(new Date(-50,0,1))
— 1849-12-31T23:30:20.000new LocalDateTime(new Date(-116,6,4))
— 1784-07-03T23:30:20.000
谁知道,这是什么,以及如何防止这个问题?
java - 在 API 中使用 java.util.Date 的好理由
是否有任何特定原因在 API 中使用 Date 类(例如,在员工出生日期字段中)而不是 long 或 Long。
对此有一些讨论: java-date-vs-calendar,但我想特别知道是否有任何理由使用日期,当长(或长)看起来更简单时。
当然,我会使用 TimeZone 和 SimpleDateFormatter 在 GUI 中解析和显示日期,也许还会使用 Calendar 来执行操作,但我只关心这个问题中数据模型/API 中日期的存储和表示。
更新:我不选择 Date 的一个原因是它是可变的。因此,如果我在我的 API 中公开一个日期,调用者可以调用 setTime(long),这似乎违反了基本封装。对我来说,这似乎超过了使用 Date 提供的额外清晰度的好处,因为我可以调用长属性 timeInMillisecondsSinceEpoch 并将相同的信息传达给调用者。
java - 我们在 Java 中有一个 TimeSpan 类的类吗
我只是想知道是否需要 TimeSpanjava.util
以便我可以定义这两次之间有多少小时、分钟和秒。
由此TimeSpan
我们可以得到两次之间的时间间隔。像
或者
有了这个TimeSpan
,我们可以在SimpleDateFormat
.
我不确定这是否已经在 Java 中实现但我还没有发现。
java - java.util.Date 的行为
以上打印:
为什么是这样?这是日期中的错误吗?这很难相信。
java - 为什么我不应该使用 date4j 而不是 joda java.util.Calendar 或 jsr 310?
我最近遇到了date4j,这是一个非常简单的库(本质上是一个类),用于在 Java 中处理日期。从概念上讲,我真的很喜欢 date4j 的“想法”。事实上,在阅读了整个主站点和 javadoc 中的文档之后,我非常同意所陈述的一切。
现在,我不应该使用 date4j可能有几个原因 - 错误、性能、缺乏用户等。我不是在问这些事情。从概念上讲,我在问 date4j 的想法有什么问题(对于那里的大多数应用程序)?当然,可能有一些应用程序需要 joda 或threeten 之类的东西——但我相信这些只是少数。
人们向处理日期/时间的用户(几乎每个编写 Java 应用程序的人)提供的正常建议大致如下:
- 使用 joda-time 而不是 java.util.Calendar
- 将您的网络服务器设置为 UTC
- 将数据库服务器设置为 UTC
- 以 UTC 存储您的日期时间
事实上,最后三个要点说明了人们在处理日期时当前的心理模型存在的问题。人们试图在应用程序和数据库级别管理时区(更不用说 ORM 框架添加了另一层抽象,这使事情进一步复杂化)。
你不应该做那些事情。例如,如果您使用的是 java.util.Calendar,并且您正在一些用户定义的时区中操作时间:
无论时区如何,这都代表时间上的“瞬间”。您应该能够在这一次与数据库之间进行持久化,而不必担心发生任何类型的“转换”。数据库是否在上海时区和网络服务器在洛杉矶时区无关紧要 - 时间的瞬间是相同的。
一个问题是一些数据库试图为你管理时区(我在看着你,Postgres!grr!),更糟糕的是,JDBC 驱动程序级别的行为是特定于供应商的——即 PreparedStatement.setDate/getDate。
date4j 使用的心智模型似乎摆脱了所有的困惑。例如,显式强制使用在调用 now() 时提供时区。网站上有一些非常好的使用图书馆的建议(这些事情我之前已经在我自己的应用程序中做),例如:
- 不要使用试图管理时区的数据库类型
- 将时区存储为单独的列(如果需要)
为什么没有更多人采用像 date4j 这样的库?
java - 关于 java.util.Calendar 的问题
我正在尝试使用以下代码来理解行为。我的本地时区是 UTC -7(亚利桑那州)。
它生成以下输出:
1 UTC -4 小时:12
1 UTC -4 日:27
1 UTC -7 时间戳:2011 年 9 月 27 日星期二 12:40:37 MST
2 UTC -4 小时:0
2 UTC -4 日:28
2 UTC -7 时间戳:Wed Sep 28 00:40:37 MST 2011
3 UTC -4 Hour:3
3 UTC -4 Day:28
3 UTC -7 时间戳:Wed Sep 28 00:40:37 MST 2011
4 UTC -4 Hour:12
4 UTC -4 Day:28
4 UTC -7 时间戳:Wed Sep 28 09:40:37 MST 2011
我不明白为什么第一个 cal.set(Calendar.HOUR,12) 会导致日期翻转到第二天。对一个值使用 add() 会导致调整其他值是有道理的,但 set() 也这样做没有意义。
有没有办法在保留所有其他值的情况下进行绝对 set()?
java - java类中的静态最终日期字段
我们有一个公共静态 util 方法,它可以解析字符串并返回 Date 对象,但如果解析的字符串无法转换为 Date 对象,它也会抛出 ParseException。
现在,在另一个类中,我希望使用上述 util 方法将静态最终 Date 初始化为一个值。但鉴于 util 方法抛出 ParseException,这是不允许的。
这是我想做的,是不允许的
保持此日期字段“最终”的推荐方法是什么?