{"id":2178,"date":"2010-12-01T17:09:13","date_gmt":"2010-12-01T11:39:13","guid":{"rendered":"https:\/\/tothenewco.pro\/blog\/?p=2178"},"modified":"2016-12-19T15:06:12","modified_gmt":"2016-12-19T09:36:12","slug":"addition-and-subtraction-on-date","status":"publish","type":"post","link":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/","title":{"rendered":"Addition or subtraction on date"},"content":{"rendered":"<p>We have a nice culture in our company where we sit together on every alternate Saturday and either share new things or we just learn about the technology we are using. This time we discussed about Groovy Meta Programming tricks and we watched the Meta Programming video of Jeff Brown. In that video the handling of Missing Method was really helpful.<\/p>\n<p>Today I got the use case in my project where I need to add\/minus the years, months, weeks etc in date. I searched about such methods but couldn&#8217;t find the best solution, though Gregorian calendar is one of the option. Then I found a very nice blog on getting <a href=\"https:\/\/tothenewco.pro\/blog\/groovy-finding-futureprevious-dates\/\">past future dates  <\/a> from <a href=\"https:\/\/tothenewco.pro\/blog\/author\/aman\/\">Aman Aggarwal<\/a>. So I added the functionality given in the blog into the Date class using Meta Programming<\/p>\n<p>[java]<br \/>\n Date.metaClass.methodMissing = {String methodName, args -&gt;<br \/>\n            List interceptableMethods = [&#8216;addYears&#8217;, &#8216;addMonths&#8217;, &#8216;addWeeks&#8217;, &#8216;addDays&#8217;, &#8216;addHours&#8217;, &#8216;addMinutes&#8217;, &#8216;addSeconds&#8217;, &#8216;minusYears&#8217;, &#8216;minusMonths&#8217;, &#8216;minusWeeks&#8217;, &#8216;minusDays&#8217;, &#8216;minusHours&#8217;, &#8216;minusMinutes&#8217;, &#8216;minusSeconds&#8217;]<br \/>\n            if (methodName in interceptableMethods &amp;&amp; args[0] instanceof Integer) {<br \/>\n                String method = methodName.replace(&#8216;add&#8217;, &#8221;)<br \/>\n                method = method.replace(&#8216;minus&#8217;, &#8221;)<br \/>\n                def impl = {methodArg -&gt;<br \/>\n                    Date date<br \/>\n                    use(org.codehaus.groovy.runtime.TimeCategory) {<br \/>\n                        if (methodName.contains(&#8216;add&#8217;)) {<br \/>\n                            date = delegate + methodArg.&quot;get${method}&quot;()<br \/>\n                        }<br \/>\n                        else {<br \/>\n                            date = delegate &#8211; methodArg.&quot;get${method}&quot;()<br \/>\n                        }<br \/>\n                    }<br \/>\n                    return date<br \/>\n                }<br \/>\n                Date.metaClass.&quot;${methodName}&quot; = impl<br \/>\n                impl(* args)<br \/>\n            }<br \/>\n            else {<br \/>\n                throw new MissingMethodException(methodName, Date, args)<br \/>\n            }<br \/>\n        }<br \/>\n[\/java]<\/p>\n<p>I added the above code in my Grails application Bootstrap file and now I can just call the methods like<\/p>\n<p>[java]<br \/>\nDate date=new Date()<br \/>\ndate=date.addYears(2)<br \/>\ndate=date.addMonths(4)<br \/>\ndate=date.minusHours(36)<br \/>\n[\/java]<br \/>\n<\/p>\n<p>Hope it helps<br \/>\n<a href=\"https:\/\/tothenewco.pro\/blog\/author\/uday\/\">Uday Pratap Singh<\/a><br \/>\n<a href=\"mailto:uday@intelligrape.com\">uday@intelligrape.com<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>We have a nice culture in our company where we sit together on every alternate Saturday and either share new things or we just learn about the technology we are using. This time we discussed about Groovy Meta Programming tricks and we watched the Meta Programming video of Jeff Brown. In that video the handling [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":7,"footnotes":""},"categories":[1],"tags":[465,464,467,466],"class_list":["post-2178","post","type-post","status-publish","format-standard","hentry","category-technology","tag-add-subtract-weeks","tag-add-subtract-year","tag-handle-methodmissing-in-meta-programming","tag-meta-programming-in-groovy"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"We have a nice culture in our company where we sit together on every alternate Saturday and either share new things or we just learn about the technology we are using. This time we discussed about Groovy Meta Programming tricks and we watched the Meta Programming video of Jeff Brown. In that video the handling\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Uday Pratap Singh\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"TO THE NEW BLOG\" \/>\n\t\t<meta property=\"og:type\" content=\"blog\" \/>\n\t\t<meta property=\"og:title\" content=\"Addition or subtraction on date | TO THE NEW Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"We have a nice culture in our company where we sit together on every alternate Saturday and either share new things or we just learn about the technology we are using. This time we discussed about Groovy Meta Programming tricks and we watched the Meta Programming video of Jeff Brown. In that video the handling\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@tothenew\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Addition or subtraction on date | TO THE NEW Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"We have a nice culture in our company where we sit together on every alternate Saturday and either share new things or we just learn about the technology we are using. This time we discussed about Groovy Meta Programming tricks and we watched the Meta Programming video of Jeff Brown. In that video the handling\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/addition-and-subtraction-on-date\\\/#article\",\"name\":\"Addition or subtraction on date | TO THE NEW Blog\",\"headline\":\"Addition or subtraction on date\",\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/uday\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"},\"datePublished\":\"2010-12-01T17:09:13+05:30\",\"dateModified\":\"2016-12-19T15:06:12+05:30\",\"inLanguage\":\"en-US\",\"commentCount\":3,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/addition-and-subtraction-on-date\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/addition-and-subtraction-on-date\\\/#webpage\"},\"articleSection\":\"Technology, add subtract weeks, add subtract year, handle methodmissing in meta programming, Meta programming in groovy\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/addition-and-subtraction-on-date\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/addition-and-subtraction-on-date\\\/#listItem\",\"name\":\"Addition or subtraction on date\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/addition-and-subtraction-on-date\\\/#listItem\",\"position\":3,\"name\":\"Addition or subtraction on date\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\",\"name\":\"TO THE NEW Blog\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/uday\\\/#author\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/uday\\\/\",\"name\":\"Uday Pratap Singh\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/addition-and-subtraction-on-date\\\/#authorImage\",\"url\":\"https:\\\/\\\/newersworld-sf-static.tothenew.net\\\/prod\\\/profilePicFolder\\\/d4c98503-ff55-4112-8fc2-e3c4fcc6fc3a_282-Uday-Pratap-Singh-PROFILEPICTURE.jpeg\",\"width\":96,\"height\":96,\"caption\":\"Uday Pratap Singh\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/addition-and-subtraction-on-date\\\/#webpage\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/addition-and-subtraction-on-date\\\/\",\"name\":\"Addition or subtraction on date | TO THE NEW Blog\",\"description\":\"We have a nice culture in our company where we sit together on every alternate Saturday and either share new things or we just learn about the technology we are using. This time we discussed about Groovy Meta Programming tricks and we watched the Meta Programming video of Jeff Brown. In that video the handling\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/addition-and-subtraction-on-date\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/uday\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/author\\\/uday\\\/#author\"},\"datePublished\":\"2010-12-01T17:09:13+05:30\",\"dateModified\":\"2016-12-19T15:06:12+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/\",\"name\":\"TO THE NEW Blog\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tothenew.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Addition or subtraction on date | TO THE NEW Blog","description":"We have a nice culture in our company where we sit together on every alternate Saturday and either share new things or we just learn about the technology we are using. This time we discussed about Groovy Meta Programming tricks and we watched the Meta Programming video of Jeff Brown. In that video the handling","canonical_url":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/#article","name":"Addition or subtraction on date | TO THE NEW Blog","headline":"Addition or subtraction on date","author":{"@id":"https:\/\/tothenewco.pro\/blog\/author\/uday\/#author"},"publisher":{"@id":"https:\/\/tothenewco.pro\/blog\/#organization"},"datePublished":"2010-12-01T17:09:13+05:30","dateModified":"2016-12-19T15:06:12+05:30","inLanguage":"en-US","commentCount":3,"mainEntityOfPage":{"@id":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/#webpage"},"isPartOf":{"@id":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/#webpage"},"articleSection":"Technology, add subtract weeks, add subtract year, handle methodmissing in meta programming, Meta programming in groovy"},{"@type":"BreadcrumbList","@id":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog#listItem","position":1,"name":"Home","item":"https:\/\/tothenewco.pro\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/tothenewco.pro\/blog\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/#listItem","name":"Addition or subtraction on date"},"previousItem":{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/#listItem","position":3,"name":"Addition or subtraction on date","previousItem":{"@type":"ListItem","@id":"https:\/\/tothenewco.pro\/blog\/category\/technology\/#listItem","name":"Technology"}}]},{"@type":"Organization","@id":"https:\/\/tothenewco.pro\/blog\/#organization","name":"TO THE NEW Blog","url":"https:\/\/tothenewco.pro\/blog\/"},{"@type":"Person","@id":"https:\/\/tothenewco.pro\/blog\/author\/uday\/#author","url":"https:\/\/tothenewco.pro\/blog\/author\/uday\/","name":"Uday Pratap Singh","image":{"@type":"ImageObject","@id":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/#authorImage","url":"https:\/\/newersworld-sf-static.tothenew.net\/prod\/profilePicFolder\/d4c98503-ff55-4112-8fc2-e3c4fcc6fc3a_282-Uday-Pratap-Singh-PROFILEPICTURE.jpeg","width":96,"height":96,"caption":"Uday Pratap Singh"}},{"@type":"WebPage","@id":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/#webpage","url":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/","name":"Addition or subtraction on date | TO THE NEW Blog","description":"We have a nice culture in our company where we sit together on every alternate Saturday and either share new things or we just learn about the technology we are using. This time we discussed about Groovy Meta Programming tricks and we watched the Meta Programming video of Jeff Brown. In that video the handling","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/tothenewco.pro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/#breadcrumblist"},"author":{"@id":"https:\/\/tothenewco.pro\/blog\/author\/uday\/#author"},"creator":{"@id":"https:\/\/tothenewco.pro\/blog\/author\/uday\/#author"},"datePublished":"2010-12-01T17:09:13+05:30","dateModified":"2016-12-19T15:06:12+05:30"},{"@type":"WebSite","@id":"https:\/\/tothenewco.pro\/blog\/#website","url":"https:\/\/tothenewco.pro\/blog\/","name":"TO THE NEW Blog","inLanguage":"en-US","publisher":{"@id":"https:\/\/tothenewco.pro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"TO THE NEW BLOG","og:type":"blog","og:title":"Addition or subtraction on date | TO THE NEW Blog","og:description":"We have a nice culture in our company where we sit together on every alternate Saturday and either share new things or we just learn about the technology we are using. This time we discussed about Groovy Meta Programming tricks and we watched the Meta Programming video of Jeff Brown. In that video the handling","og:url":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/","og:image":"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","og:image:secure_url":"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png","twitter:card":"summary","twitter:site":"@tothenew","twitter:title":"Addition or subtraction on date | TO THE NEW Blog","twitter:description":"We have a nice culture in our company where we sit together on every alternate Saturday and either share new things or we just learn about the technology we are using. This time we discussed about Groovy Meta Programming tricks and we watched the Meta Programming video of Jeff Brown. In that video the handling","twitter:image":"https:\/\/tothenewco.pro\/blog\/wp-content\/themes\/ttn\/images\/social-logo.png"},"aioseo_meta_data":{"post_id":"2178","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"limit_modified_date":false,"created":"2021-04-30 08:15:01","updated":"2024-02-29 11:00:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"ai":null,"breadcrumb_settings":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/tothenewco.pro\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/tothenewco.pro\/blog\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tAddition or subtraction on date\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/tothenewco.pro\/blog"},{"label":"Technology","link":"https:\/\/tothenewco.pro\/blog\/category\/technology\/"},{"label":"Addition or subtraction on date","link":"https:\/\/tothenewco.pro\/blog\/addition-and-subtraction-on-date\/"}],"_links":{"self":[{"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/posts\/2178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/comments?post=2178"}],"version-history":[{"count":0,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/posts\/2178\/revisions"}],"wp:attachment":[{"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/media?parent=2178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/categories?post=2178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tothenewco.pro\/blog\/wp-json\/wp\/v2\/tags?post=2178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}