Tag: 日历

检索上周一和周五的日期的最佳方法是什么

我需要得到上周一和周五的日期。 要做到这一点,我得到本周一的日期,减去7天。 这给了我上周一的星期一。 为了得到星期五的日期,我必须加上4.这让我感到困惑,因为出于某种原因,一周的第一天是星期日而不是星期一在英国。 无论如何,这是我如何得到日期。 // Get the dates for last MON & FRI Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); cal.add(Calendar.DAY_OF_WEEK, -7); cal.set(Calendar.HOUR_OF_DAY,0); cal.set(Calendar.MINUTE,0); cal.set(Calendar.SECOND,0); cal.set(Calendar.MILLISECOND,0); // Get the date on Friday cal.add(Calendar.DAY_OF_WEEK, 4); cal.set(Calendar.HOUR_OF_DAY,23); cal.set(Calendar.MINUTE,59); cal.set(Calendar.SECOND,59); cal.set(Calendar.MILLISECOND,0); 上述工作,但我感兴趣的是逻辑有什么问题。 即它适用于Februarys,闰年等。 随意提出更好的解决方案/方法。 谢谢

具有特定格式的XMLGregorianCalendar的日期

我得到一个Date对象,我需要转换为XMLGregorian日历特定格式 我尝试了以下方法 String formattedDate = sdf.format(categoryData.getBulkCollectionTime()); //yyyy-MM-dd HH:mm:ss XMLGregorianCalendar xmlCal = DatatypeFactory.newInstance().newXMLGregorianCalendar(formattedDate); dataListType.setTimestamp(xmlCal); 我得到一个例外,我肯定在这里做错了。 但我想将Date对象格式化为指定的格式,这完全由sdf.format完成。 但是如何为相同的(从formattedDate)创建XMLGregorianCalendar对象?

将1周添加到日期,首选哪种方式?

我正在审查工作中的一些代码,并发现代码处理如何处理当前时间1周的不一致,并想知道是否有任何理由为什么一个应该真正优先于另一个: 第一个是实用方法: public static Date addDaysToDate(final Date date, int noOfDays) { Date newDate = new Date(date.getTime()); GregorianCalendar calendar = new GregorianCalendar(); calendar.setTime(newDate); calendar.add(Calendar.DATE, noOfDays); newDate.setTime(calendar.getTime().getTime()); return newDate; } 第二个使用简单的毫秒算法: long theFuture = System.currentTimeMillis() + (86400 * 7 * 1000); Date nextWeek = new Date(theFuture); 第二种方法显然使用“幻数”来定义一周,但是这可以移动到一个常量MILLISECONDS_IN_ONE_WEEK = 86400 * 7 * 1000除此之外,是否有任何理由为什么这些方法中的一种应该优先于另一种? 基本上我想改变代码在整个过程中保持一致,但我不完全确定删除哪一个。 所以任何论据都是有用的。

如何从Java中的日历对象构建日,月,年的列表?

我想为表单构建一个日期窗口小部件,其中包含月,日,年的选择列表。 因为列表根据月份和年份而不同,所以我不能将其编写为31天。 (例如,2月有28天不是30或31,有些年甚至29天)我如何使用日历或joda对象来构建这些列表。

调用Java的Calendar.getTime()是否需要更新对象?

我在一些java代码中发现了一条注释,该代码声明需要调用getTime()来更新Calendar对象。 这是真的? 我找不到任何说这是必要的东西。 这是代码: Calendar cal = new GregorianCalendar(); cal.setFirstDayOfWeek(Calendar.SUNDAY); cal.set(2009, 9 – 1, 10, 2, 30); // Get Time needs to be called to update the Calendar object cal.getTime();

Java:从任何日期获取周数?

我有一个小程序,显示从今天开始的当前周,如下所示: GregorianCalendar gc = new GregorianCalendar(); int day = 0; gc.add(Calendar.DATE, day); 然后是显示周数的JLabel: JLabel week = new JLabel(“Week ” + gc.get(Calendar.WEEK_OF_YEAR)); 所以现在我想要一个JTextField,您可以在其中输入日期,JLabel将使用该日期的周数进行更新。 我真的不知道该怎么做,因为我对Java很新。 我需要将输入保存为字符串吗? 整数? 它必须是什么格式(yyyyMMdd等)? 如果有人能帮助我,我会很感激!

Java.util.Calendar – 自1970年1月1日以来的毫秒数

程序后跟输出。 有人请向我解释为什么从1970年1月1日起的10,000,000毫秒是1969年11月31日。好吧,有人请解释我的假设,即从1970年1月1日开始第一次测试应该产生10,000,000毫秒的时间有什么问题。数字小于10,000,000产生同样的结果。 public static void main(String[] args) { String x = “10000000”; long l = new Long(x).longValue(); System.out.println(“Long value: ” + l); Calendar c = new GregorianCalendar(); c.setTimeInMillis(l); System.out.println(“Calendar time in Millis: ” + c.getTimeInMillis()); String origDate = c.get(Calendar.YEAR) + “-” + c.get(Calendar.MONTH) + “-” + c.get(Calendar.DAY_OF_MONTH); System.out.println(“Date in YYYY-MM-DD format: ” + origDate); x […]

比较两个Calendar对象

我想比较两个Calendar对象,看它们是否包含相同的日期。 我不关心天数以下的任何价值。 我已经实现了这个,我无法考虑它应该失败的任何情况: private static boolean areEqualDays(Calendar c1, Calendar c2) { SimpleDateFormat sdf = new SimpleDateFormat(“dd-MM-yyyy”); return (sdf.format(c1.getTime()).equals(sdf.format(c2.getTime()))); } 这种方法是正确的还是我应该逐场比较c1和c2?

反复出现的事件逻辑

我正在开发一个Groovy / Java日历类型的应用程序,允许用户输入具有开始日期和可选重复的事件。 如果它是一个反复出现的事件,它可能会重现: 每月与对应于开始日期的月份日期 每周一周,对应于开始日期 对应于开始日期的每周的每两周一次 等等 我最初计划使用Google日历API来执行所有重复逻辑,但事实certificate这是一个巨大的PITA,因为如果有人关心我会进一步讨论。 所以现在,我决定推出自己的解决方案。 给定一个日期,我想弄清楚在这个日期是否发生了重复发生的事件。 我的逻辑(伪代码)如下: public boolean occursOnDate(def date, def event) { def firstDate = event.startDate if (firstDate > date) { return false; } else if (event.isWeekly()) { return event.dayOfWeek() == date.dayOfWeek() } else if (event.isMonthly()) { return event.dayOfMonth() == date.dayOfMonth() } else { // At this point […]

Java日历获取当前日期,没有小时,分钟,秒和毫秒,以毫秒为单位

我想以毫秒为单位获取当前日期,只有年,月和日期。 但是当我使用这段代码时: Calendar cal = Calendar.getInstance(); cal.clear(Calendar.HOUR); cal.clear(Calendar.MINUTE); cal.clear(Calendar.SECOND); cal.clear(Calendar.MILLISECOND); currentDate = cal.getTimeInMillis(); 我仍然以毫秒为单位获得时间。 我怎样才能解决这个问题? //安德烈