{"id":1042,"date":"-0001-11-30T00:00:00","date_gmt":"-0001-11-29T23:10:04","guid":{"rendered":""},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T22:00:00","slug":"1042","status":"publish","type":"post","link":"https:\/\/www.vialattea.net\/content\/1042\/","title":{"rendered":"Sto cercando informazione sull&#8217;algoritmo del calendario gregoriano. Il mio problema \u00e8 il seguente: Dato il campo data ovvero input = DD\/MM\/YYYY voglio determinare il giorno della settimana e il numero della settimana dell&#8217;anno in corso, ovvero output1 = num. settimana e output2 = giorno della settimana = {lun | mar | &#8230;| dom}."},"content":{"rendered":"<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">In genere<br \/>\n        per tutti i conti sul calendario si preferisce operare sul giorno espresso<br \/>\n        come <b>giorno giuliano<\/b>, anzich\u00e9 nel formato ordinario DD\/MM\/YYYY.<br \/>\n        <\/font><\/p>\n<\/p>\n<blockquote>\n<table width=\"80%\" cellpadding=\"6\" border=\"1\">\n<tbody>\n<tr bgcolor=\"#eeeeee\">\n<td>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">Per<br \/>\n                calcolare il giorno giuliano si operi come segue:<\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">sia<br \/>\n                Y l&#8217;anno (es. 1998)<br \/>\n                sia M il mese (1 per gennaio, 2 per febbraio, ecc.<br \/>\n                sia D il giorno del mese.<\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">Se<br \/>\n                (M = 1 o M = 2) allora (Y = Y &#8211; 1 e M = M + 12), altrimenti si<br \/>\n                lascino invariati Y e M.<\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">Si<br \/>\n                calcolino ora le quantit\u00e0 ausiliarie <\/font>\n              <\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\"><font face=\"Courier New, Courier, mono\">A<br \/>\n                = INT(Y\/100)<\/font> <font face=\"Courier New, Courier, mono\"><br \/>\n                B = 2 &#8211; A + INT(A\/4)<\/font><\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">il<br \/>\n                giorno giuliano corrispondente sar\u00e0 <\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\"><font face=\"Courier New, Courier, mono\">JD<br \/>\n                = INT(365,25\u00b7(Y + 4716)) + INT(30.6001\u00b7(M + 1))<br \/>\n                + D + B &#8211; 1524.5<\/font><\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">Dove<br \/>\n                INT(x) \u00e8 la parte intera di x. <br \/>\n                Il precedente algoritmo vale anche per il calendario Giuliano,<br \/>\n                avendo cura di porre B = 0.<\/font><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/blockquote>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">Per conoscere<br \/>\n        il giorno della settimana, \u00e8 sufficiente calcolare il giorno giuliano<br \/>\n        corrispondente alla data voluta ed operare come segue:<\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">&#8211; si somma<br \/>\n        1,5 al giorno giuliano<\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">&#8211; si divide<br \/>\n        il risultato per 7 e si considera il resto<\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">&#8211; se il<br \/>\n        resto \u00e8 0 \u00e8 domenica, se \u00e8 1 \u00e8 un lunedi,<br \/>\n        e cos\u00ec via fino a 6, che corrisponde al sabato.<\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">Per quanto<br \/>\n        riguarda il numero della settimana, supponendo che la settimana inizi<br \/>\n        con la domenica e si concluda con il sabato, si pu\u00f2 calcolare il<br \/>\n        giorno dell&#8217;anno:<\/font><\/p>\n<p><font size=\"-1\" face=\"Courier New, Courier, mono\">N = INT(275\u00b7M\/9)<br \/>\n        &#8211; K\u00b7INT((M+9)\/12)) + D &#8211; 30<\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">dove M \u00e8<br \/>\n        il mese, D il giorno del mese e K vale 1 se l&#8217;anno \u00e8 bisestile,<br \/>\n        2 negli anni ordinari. N vale 1 al 1 gennaio, 365 al 31 dicembre, o 366<br \/>\n        se \u00e8 un anno bisestile.<br \/>\n        Noto il giorno dell&#8217;anno, si divide per 7 ed il quoziente indica quante<br \/>\n        settimane sono trascorse dal 1 gennaio. Poi si calcola il giorno della<br \/>\n        settimana del 1 gennaio: se e&#8217; una domenica allora si aggiunge 1 al numero<br \/>\n        della settimana, se e&#8217; un altro giorno si aggiunge 2. Tuttavia per i giorni<br \/>\n        compresi tra il primo giorno dell&#8217;anno e la prima domenica dell&#8217;anno si<br \/>\n        deve aggiungere 1 <\/font><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">e<br \/>\n        non 2.<\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">Probabilmente<br \/>\n        esistono soluzioni meno macchinose, escogitate dai programmatori di sistemi<br \/>\n        operativi, i cui comandi di data forniscono anche il numero della settimana.<\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\">Ecco altri<br \/>\n        riferimenti utili:<\/font><\/p>\n<p><font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"><a href=\"http:\/\/www.eskimo.com\/%7Escs\/C-faq\/q20.31.html%20\">http:\/\/www.eskimo.com\/~scs\/C-faq\/q20.31.html<br \/>\n        <\/a> <\/font><\/p>\n<pre>dayofweek(y, m, d) \/* 0 = Sunday *\/<br\/> int y, m, d;      \/* 1 &lt;= m &lt;= 12, y &gt; 1752 or so *\/<br\/> { static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};  <br\/>   y -= m &lt; 3; <br\/>   return (y + y\/4 - y\/100 + y\/400 + t[m-1] + d) % 7;<br\/> }<\/pre>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\"><a href=\"http:\/\/www.cs.unb.ca\/%7Ealopez-o\/math-faq\/mathtext\/node39.html#SECTION0011100000000000000000\">http:\/\/www.cs.unb.ca\/~alopez-o\/math-faq\/mathtext\/node39.html#SECTION0011100000000000000000<\/a><\/font><\/p>\n<p><font size=\"-1\" face=\"Verdana, Arial, Helvetica, sans-serif\"><br \/>\n        <\/font><\/p>\n","protected":false},"excerpt":{"rendered":"<p>[&#8230;]<\/p>\n","protected":false},"author":194,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-1042","post","type-post","status-publish","format-standard","hentry","category-calendari"],"_links":{"self":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/posts\/1042","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/users\/194"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/comments?post=1042"}],"version-history":[{"count":0,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/posts\/1042\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/media?parent=1042"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/categories?post=1042"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vialattea.net\/content\/wp-json\/wp\/v2\/tags?post=1042"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}