{"id":18715,"date":"2022-11-01T18:14:42","date_gmt":"2022-11-01T12:44:42","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/"},"modified":"2022-11-01T18:14:42","modified_gmt":"2022-11-01T12:44:42","slug":"solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/","title":{"rendered":"[Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-47871949\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"47871949\" data-parentid=\"47856962\" data-score=\"1\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<h2>TL:DR<\/h2>\n<pre><code>LocalDateTime ldt = LocalDateTime.of(\n    reminder.getReminderYear(),\n    reminder.getReminderMonth() + 1,  \/\/ Add one to adjust from zero-based counting.\n    reminder.getReminderDayofMonth(),\n    reminder.getReminderHour(),\n    reminder.getReminderMinute()\n);\n<\/code><\/pre>\n<h2>java.time<\/h2>\n<p>I suggest you put an end to using the very old and long outmoded <code>Calendar<\/code> class. Today we have so much better in <code>java.time<\/code>, the modern Java date and time API also known as JSR-310. The above code gives you the equivalent of what I think you were trying. I assumed <code>getReminderMonth()<\/code> returned 0-based month, so added 1 since the modern API numbers months from 1 just as humans do. If you can, I recommend you use an <code>OffsetDateTime<\/code> or <code>ZonedDateTime<\/code> to make the point on the time line unambiguous.<\/p>\n<h2>Question: Can I use the modern API with my Java version?<\/h2>\n<p>If using at least Java <strong>6<\/strong>, you can.<\/p>\n<ul>\n<li>In Java 8 and later the new API comes built-in.<\/li>\n<li>In Java 6 and 7 get the ThreeTen Backport, the backport of the new classes (ThreeTen for JSR-310; link below). <\/li>\n<li>On Android, use the Android edition of ThreeTen Backport. It\u2019s called ThreeTenABP. See the linked question below.<\/li>\n<\/ul>\n<h2>What went wrong in your code<\/h2>\n<p>I think the observed date increment happens when both of the following conditions are met:<\/p>\n<ul>\n<li>Your code is running in the afternoon, that is at 12 noon or later in the <code>Calendar<\/code>\u2019s time zone (typically the JVM\u2019s time zone, in turn typically your local time zone).<\/li>\n<li><code>getReminderHour()<\/code> returns an hour in the afternoon, that is, 12 or later.<\/li>\n<\/ul>\n<p>I cannot be 100 % sure since you haven\u2019t shown us the code that produced your bug. But very likely your <code>Calendar<\/code> instance was created with the current time (<code>Calendar.getInstance()<\/code> and <code>new GregorianCalendar()<\/code>, for example, do this). In the afternoon it is obviously created with a time in PM. Then when you call <code>calendar.set(Calendar.HOUR, reminder.getReminderHour())<\/code>, this tries to set the hour within PM, but since the hour is 12 or greater, this overflows into AM of the following day. An hour of 14 (PM), for example, becomes 2 AM the next day.<\/p>\n<p>If I am correct, the problem may seem solved not because you moved the creation of the calendar object inside your <code>if<\/code> statement, but because either you ran your program in the morning or the reminder hour was in the morning (before 12 noon). And your bug may surface again next time both the above-mentioned conditions apply,<\/p>\n<h2>Links<\/h2>\n<ul>\n<li><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/docs.oracle.com\/javase\/tutorial\/datetime\/\">Oracle tutorial trail: Date Time<\/a><\/li>\n<li>Question: How to use ThreeTenABP in Android Project<\/li>\n<li><a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/www.threeten.org\/threetenbp\/\">ThreeTen Backport home page<\/a><\/li>\n<li><a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/jcp.org\/en\/jsr\/detail?id=310\">Java Specification Request (JSR) 310<\/a>, where the modern API was first defined<\/li>\n<\/ul>\n<\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">1<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] TL:DR LocalDateTime ldt = LocalDateTime.of( reminder.getReminderYear(), reminder.getReminderMonth() + 1, \/\/ Add one to adjust from zero-based counting. reminder.getReminderDayofMonth(), reminder.getReminderHour(), reminder.getReminderMinute() ); java.time I suggest you put an end to using the very old and long outmoded Calendar class. Today we have so much better in java.time, the modern Java date and time API also &#8230; <a title=\"[Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/\" aria-label=\"More on [Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[452,4504,841,323],"class_list":["post-18715","post","type-post","status-publish","format-standard","hentry","category-solved","tag-android","tag-android-calendar","tag-calendar","tag-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] TL:DR LocalDateTime ldt = LocalDateTime.of( reminder.getReminderYear(), reminder.getReminderMonth() + 1, \/\/ Add one to adjust from zero-based counting. reminder.getReminderDayofMonth(), reminder.getReminderHour(), reminder.getReminderMinute() ); java.time I suggest you put an end to using the very old and long outmoded Calendar class. Today we have so much better in java.time, the modern Java date and time API also ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-11-01T12:44:42+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month\",\"datePublished\":\"2022-11-01T12:44:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/\"},\"wordCount\":408,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"android\",\"android-calendar\",\"calendar\",\"java\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/\",\"name\":\"[Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-11-01T12:44:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month - JassWeb","og_description":"[ad_1] TL:DR LocalDateTime ldt = LocalDateTime.of( reminder.getReminderYear(), reminder.getReminderMonth() + 1, \/\/ Add one to adjust from zero-based counting. reminder.getReminderDayofMonth(), reminder.getReminderHour(), reminder.getReminderMinute() ); java.time I suggest you put an end to using the very old and long outmoded Calendar class. Today we have so much better in java.time, the modern Java date and time API also ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/","og_site_name":"JassWeb","article_published_time":"2022-11-01T12:44:42+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month","datePublished":"2022-11-01T12:44:42+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/"},"wordCount":408,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["android","android-calendar","calendar","java"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/","url":"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/","name":"[Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-11-01T12:44:42+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-discrepancy-in-java-calendar-set-day-of-month-vs-get-day-of-month\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Discrepancy in Java Calendar set Day Of Month vs Get Day Of Month"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/18715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=18715"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/18715\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=18715"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=18715"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=18715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}