Tag: 日期

获取Java日期或日历的Time组件

是否有一种简单或优雅的方式只能抓取Java Date(或日历)的一天中的时间(小时/分钟/秒/毫秒),这对我来说无关紧要? 我正在寻找一个很好的方法来分别考虑日期(年/月/日)和时间部分,但据我所知,我坚持分别访问每个字段。 我知道我可以编写自己的方法来单独抓取我感兴趣的字段,但我会将其作为静态实用程序方法,这很难看。 另外,我知道Date和Calendar对象具有毫秒精度,但在任何一种情况下我都没有看到访问毫秒组件的方法。 编辑:我不清楚这一点:使用Date :: getTime()或Calendar :: getTimeInMillis之一对我来说并不是非常有用,因为那些返回自纪元以来的毫秒数(由该日期或日历表示) ,实际上并没有将时间与其他信息分开。 @Jherico的答案是最接近的事情,我想,但绝对是我仍需要采用我自己编写的方法。 这不是我想要的,因为它仍然包括返回毫秒值的小时,分​​钟和秒 – 尽管我可能会使它适用于我的目的。 我仍然认为每个组件都是独立的 ,尽管它们当然不是。 您可以将时间写为自任意参考日期以来的毫秒数,或者您可以写出与year/month/day hours:minutes:seconds.milliseconds完全相同的时间year/month/day hours:minutes:seconds.milliseconds 。 year/month/day hours:minutes:seconds.milliseconds 。 这不是用于显示目的。 我知道如何使用DateFormat制作漂亮的日期字符串。 编辑2:我原来的问题来自我发现自己编写的一小组实用函数 – 例如: 检查两个Date是否代表同一天的日期时间; 检查日期是否在由其他两个日期指定的范围内,但有时检查包含,有时不检查,具体取决于时间组件。 Joda Time有这种function吗? 编辑3: @ Jon关于我的第二个要求的问题,只是为了澄清:第二个要求是使用我的日期有时代表整天的结果 – 时间组件根本不重要 – 有时代表日期时间(这是IMO,包含year/month/day 和 hours:minutes:seconds:…的最准确的单词hours:minutes:seconds:… )。 当Date表示整天时,其时间部分为零(例如Date的“time component”是午夜),但语义规定范围检查在结束日期包含。 因为我只是将此检查留给Date :: before和Date :: after,所以我必须在结束日期添加1天 – 因此当Date的时间组件为零时的特殊shell。 希望没有让事情变得不那么清楚。

Java:如何严格解析日期?

SimpleDateFormat是一种非常友好的解析器,可以滚动生成的日期而不是抛出错误。 如何在没有正则表达式等的情况下严格解析日期? fmt = new SimpleDateFormat(“dd.MM.yyyy”) fmt.parse(“10.11.2012”) // it works fmt.parse(“10.1150.2012”) // it works but it’s unwanted

java:如何模拟Calendar.getInstance()?

在我的代码中我有这样的事情: private void doSomething() { Calendar today = Calendar.getInstance(); …. } 如何在我的junit测试中“模拟”它以返回特定的日期?

在Android上开始和结束一周

我想知道如何计算当周的开始和结束日期? 我发现它没有在标准的android库中实现,也没有在date4j这样的lib中实现。 如果有一些简单明了的方法来实现这个? 或者我必须再次实施自行车? 谢谢。

java.util.Date对象使用多少字节的内存?

我需要存储大量的日期(可能足够大,以至于所使用的堆空间量是一个问题所以请不要过早优化的讲座),我想知道使用某种原始表示是否有意义java.util.Date(或其他一些现有的Date类)。 我知道我可以做一些分析来试一试,但有没有人知道单个Date对象使用的内存的确切字节数?

将Java Date转换为XML Date Format(反之亦然)

有没有一种简单的方法将Java Date转换为XML日期字符串格式,反之亦然? 干杯, Andez

如何在java中获取以前的日期

我有一个格式为yyyyMMdd的字符串对象。有一种简单的方法来获取具有相同格式的前一个日期的字符串吗? 谢谢

Java日期validation

我需要validation用户输入为有效日期。 用户可以输入dd / mm / yyyy或mm / yyyy(两者都有效) validation我正在做的事情 try{ GregorianCalendar cal = new GregorianCalendar(); cal.setLenient(false); String []userDate = uDate.split(“/”); if(userDate.length == 3){ cal.set(Calendar.YEAR, Integer.parseInt(userDate[2])); cal.set(Calendar.MONTH, Integer.parseInt(userDate[1])); cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(userDate[0])); cal.getTime(); }else if(userDate.length == 2){ cal.set(Calendar.YEAR, Integer.parseInt(userDate[1])); cal.set(Calendar.MONTH, Integer.parseInt(userDate[0])); cal.getTime(); }else{ // invalid date } }catch(Exception e){ //Invalid date } 因为GregorianCalendar从0开始,30/01/2009或12/2009开始给出错误。 任何建议如何解决这个问题。

将当前日期转换为整数

我想将当前日期转换为整数forms。 默认情况下,它返回long。 当我尝试将long转换为整数,然后我将整数值转换为日期意味着它显示1970年的日期。 int i = (int) new Date().getTime(); System.out.println(“Integer : ” + i); System.out.println(“Long : “+ new Date().getTime()); System.out.println(“Long date : ” + new Date(new Date().getTime())); System.out.println(“Int Date : ” + new Date(i)); 输出将成为 Integer : 1292838124 Long : 1345617601771 Long date : Wed Aug 22 12:10:01 IST 2012 Int Date : Fri Jan […]

Java有一个很好的日期解析器吗?

有没有人知道不同语言/区域设置的好日期解析器。 Java(SimpleDateFormat)的内置解析器非常严格。 它应该用当前日期完成缺失的部分。 例如 如果我不输入年份(仅限日期和月份),则应使用当前年份。 如果年份是08,则它不应解析0008,因为当前年份模式有4位数。 编辑:我想解析用户的输入。 例如,如果用户的区域设置日期格式为“dd.mm.yyyy”,并且用户仅键入“12.11”。 那么解析器应该接受它作为值为“12.11.2008”的有效日期。 目标是良好的可用性。