热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JavaCalendar.set没有给出正确的结果-JavaCalendar.setnotgivingcorrectresult

IcantseewhereImgoingwrongwiththecodebelow,itsprobablysomethingobviousbutImtoobl

I can't see where I'm going wrong with the code below, its probably something obvious but I'm too blind to see it at this stage. I'm passing a date of "01/01/2009" to an instance of calendar. I then try and set the month to 2 for March and the output I see is

我无法看到下面的代码我出错了,它可能是显而易见的但我现在太盲目了。我将“01/01/2009”的日期传递给日历实例。然后我尝试将月份设置为3月份,我看到的输出是

formatted: 01/01/2009

cal month: 2

cal月:2

cal.set( Calendar.MONTH, mth ); //mth = int 2

log.debug("formatted: " + formatter.format(cal.getTime()));
log.debug("cal month: "+Integer.valueOf(cal.get(Calendar.MONTH)).toString());

When I set the Calendar.DAY to the max value the date comes out as 31/01/2009

当我将Calendar.DAY设置为最大值时,日期为31/01/2009

Why does my setting of the Month not take?

为什么我的月份设置没有采取?

3 个解决方案

#1


I'll look into exactly what's going on, but the general rule of thumb is: don't use java.util.{Date,Calendar}. Use Joda Time instead... it's so much cleaner...

我会仔细研究发生了什么,但一般的经验法则是:不要使用java.util。{Date,Calendar}。使用Joda Time代替......它更清洁......

EDIT: I can't reproduce your issue at the moment. I'd still recommend using Joda, but if you could post a short but complete program to demonstrate the problem, we may be able to work out what's going wrong.

编辑:我目前无法重现您的问题。我仍然建议使用Joda,但如果您可以发布一个简短但完整的程序来演示问题,我们可能会弄清楚出了什么问题。

EDIT: Based on another comment, I wonder whether your formatter is wrong... are you really using "dd/mm/yyyy" rather than "dd/MM/yyyy"? "mm" means minutes, not months.

编辑:基于另一个评论,我想知道你的格式化程序是否错误...你真的使用“dd / mm / yyyy”而不是“dd / MM / yyyy”吗? “mm”表示分钟,而不是月份。

#2


We ran into this and the result was that the value you set doesn't get used until you actually try to 'get' the value from Calendar. We were puzzled because using the debugger the value never seemed to get set, but when you actually 'get' it, it works.

我们碰到了这个结果,结果是你设置的值在你真正尝试从日历中“获取”值之前不会被使用。我们感到困惑,因为使用调试器的值似乎永远不会被设置,但是当你真正“得到”它时,它就可以工作了。

http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html

Getting and Setting Calendar Field Values

获取和设置日历字段值

The calendar field values can be set by calling the set methods. Any field values set in a Calendar will not be interpreted until it needs to calculate its time value (milliseconds from the Epoch) or values of the calendar fields. Calling the get, getTimeInMillis, getTime, add and roll involves such calculation.

可以通过调用set方法来设置日历字段值。在需要计算其时间值(距Epoch的毫秒数)或日历字段的值之前,不会解释日历中设置的任何字段值。调用get,getTimeInMillis,getTime,add和roll涉及这样的计算。

#3


Perhaps you wanted to use Calendar.DAY_OF_MONTH

也许你想使用Calendar.DAY_OF_MONTH


推荐阅读
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的步骤和方法
    本文介绍了在CentOS/RHEL 7/6,Fedora 27/26/25上安装JAVA 9的详细步骤和方法。首先需要下载最新的Java SE Development Kit 9发行版,然后按照给出的Shell命令行方式进行安装。详细的步骤和方法请参考正文内容。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
author-avatar
手机用户2602897411
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有