热门标签 | 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


推荐阅读
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • oracle c3p0 dword 60,web_day10 dbcp c3p0 dbutils
    createdatabasemydbcharactersetutf8;alertdatabasemydbcharactersetutf8;1.自定义连接池为了不去经常创建连接和释放 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 本文详细解析了Autofac在高级应用场景中的具体实现,特别是如何通过注册泛型接口的类来优化依赖注入。示例代码展示了如何使用 `builder.RegisterAssemblyTypes` 方法,结合 `typeof(IEventHandler).Assembly` 和 `Where` 过滤条件,动态注册所有符合条件的类,从而简化配置并提高代码的可维护性。此外,文章还探讨了这一方法在复杂系统中的实际应用及其优势。 ... [详细]
  • Flowable 流程图路径与节点展示:已执行节点高亮红色标记,增强可视化效果
    在Flowable流程图中,通常仅显示当前节点,而路径则需自行获取。特别是在多次驳回的情况下,节点可能会出现混乱。本文重点探讨了如何准确地展示流程图效果,包括已结束的流程和正在执行的流程。具体实现方法包括生成带有高亮红色标记的图片,以增强可视化效果,确保用户能够清晰地了解每个节点的状态。 ... [详细]
  • 本文介绍了一种自定义的Android圆形进度条视图,支持在进度条上显示数字,并在圆心位置展示文字内容。通过自定义绘图和组件组合的方式实现,详细展示了自定义View的开发流程和关键技术点。示例代码和效果展示将在文章末尾提供。 ... [详细]
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社区 版权所有