#calcolo del numero di giorni lavorativi all'anno, per esempio il 2023
from datetime import date, timedelta
def count_weekdays_excluding_holidays(year, holidays):
start_date = date(year, 1, 1)
end_date = date(year, 12, 31)
total_weekdays = 0
holidays_set = set(date(year, int(d.split('/')[1]), int(d.split('/')[0])) for d in holidays)
current_date = start_date
while current_date <= end_date:
if current_date.weekday() < 5 and current_date not in holidays_set:
total_weekdays += 1
current_date += timedelta(days=1)
return total_weekdays
# Festività 2023
holidays_2023 = ["1/1", "6/1", "10/4", "25/4", "1/5", "2/6", "29/6",
"15/8", "1/11", "8/12", "25/12", "26/12"]
print(count_weekdays_excluding_holidays(2023, holidays_2023))
#-------------------------------------------------------------------------------------
#calcolo del numero di giorni lavorativi all'anno per mese, in questo caso il 2023, con scrittura del mese e numero giorni
from datetime import date, timedelta
import calendar
def monthly_working_days(year, holidays):
monthly_days = {}
holidays_set = set(date(year, int(d.split('/')[1]), int(d.split('/')[0])) for d in holidays)
for month in range(1, 13):
total_days = 0
for day in range(1, calendar.monthrange(year, month)[1] + 1):
current_date = date(year, month, day)
if current_date.weekday() < 5 and current_date not in holidays_set:
total_days += 1
month_name = calendar.month_name[month]
monthly_days[month_name] = total_days
return monthly_days
# Festivi
holidays_2023 = ["1/1", "6/1", "10/4", "25/4", "1/5", "2/6", "29/6", "15/8", "1/11", "8/12", "25/12", "26/12"]
monthly_working_days_2023 = monthly_working_days(2023, holidays_2023)
print(monthly_working_days_2023)
#Risultato: {'January': 21, 'February': 20, 'March': 23, 'April': 18, 'May': 22,
'June': 20, 'July': 21, 'August': 22, 'September': 21, 'October': 22, 'November': 21, 'December': 18}
MGB | Programming
Sorgenti, linguaggi, best practice, suggerimenti, sul mondo della programmazione e non solo
martedì 21 novembre 2023
Calcolo in python dei giorni lavorativi (lunedì venerdì) per anno 2023, escludendo le feste se capitano dal lunedì al venerdì.
Questo è un esempio di un calcolo in python dei giorni lavorativi (lunedì venerdì) per anno 2023, escludendo le feste se capitano dal lunedì al venerdì.
La Pasquetta e il S.Patrono sono variabili ma le altre sono fisse: 1 e 6 gennaio, 10 aprile pasquetta per il 2023, 25 aprile, 1 maggio, 2 giugno, 29 giugno (S.Patrono a Roma), 15 agosto, 1 novembre, 8 dicembre, 25 e 26 dicembre.
Il secondo script è parziale per la scrittura del mese e dei giorni.
Sostitutendo l'anno si potranno avere altri risultati, ma ricordarsi di inserire il giorno di Pasquetta corretto.
Basta copiare gli script in un qualsiasi editor online per eseguire una verifica.
venerdì 23 settembre 2022
Caricare una DropDownList con MVC C#
Esempio di un caricamento di una DropDownList in MVC C# partendo dal relativo Controller (file.cs).
In questo caso carico la dropdownlist del pagesize, ossia quanti dati mosterò a video ad esempio su di una grid.
Parte relativa al back-end
Nella View del file csthml inserire la seguente sintassi:
In questo caso carico la dropdownlist del pagesize, ossia quanti dati mosterò a video ad esempio su di una grid.
Parte relativa al back-end
public ActionResult Index()
{
LoadItem();
}
private void LoadItem()
{
ViewData["offsetlist"] = new List {
new SelectListItem { Text = "5", Value = "5" },
new SelectListItem { Text = "10", Value = "10" },
new SelectListItem { Text = "15", Value = "15" },
new SelectListItem { Text = "50", Value = "50" }
};
}
Nella View del file csthml inserire la seguente sintassi:
@Html.DropDownList("pagesize",
(ViewData["offsetlist"] as IEnumerable), "Page Size"
, new { @class = "form-control", onchange = "this.form.submit()" })
}
lunedì 19 settembre 2022
Apertura o Download di un file pdf già creato con MVC C#
In questo esempio è possibile aprire e poi scaricare un file pdf da un sito creato con MVC c#.
Nella View inserire la seguente sintassi che permetterà il download del file.
Parte relativa al back-end, inserire il file pdf sotto la root del progetto ~/assets/help (se non esiste la dir crearne una nuova)
Nella View inserire la seguente sintassi che permetterà il download del file.
<a class="text-default" href="@Url.Action("PdfGuide", "Home")"
target="_blank" title="Download guide"> <i class="dropdown-icon fe fe-help-circle"></i> </a>
Parte relativa al back-end, inserire il file pdf sotto la root del progetto ~/assets/help (se non esiste la dir crearne una nuova)
public FileResult PdfGuide()
{
//include the .pdf extention at the end
string path = Server.MapPath(String.Format("~/assets/help/guide.pdf"));
string mime = MimeMapping.GetMimeMapping(path);
return File(path, mime);
}
mercoledì 27 gennaio 2021
Portare un valore da un campo testo sulla barra degli indirizzi con html e javascript
L'esempio seguente mostra come è possibile inviare un valore inerito in un campo testo nella barra degli indirizzi del browser con html e javascript.
Questo metodo è utile se vogliamo ad esempio inviare il valore in un'altra pagina html o php.
Questo metodo è utile se vogliamo ad esempio inviare il valore in un'altra pagina html o php.
<html>
<body>
<form name='frmPagin' action='javascript:searchItem();' method='post'>
<table border="0" >
<tr>
<td valign="top">
<input name="inputsearch" id="inputsearch"
type="text" maxlength="80" placeholder="Search">
</td>
</tr>
<tr>
<td valign="top">
<input name="btnsearch" id="btnsearch" type="submit" value"SEND">
</td>
</tr>
</table>
<script>
function searchItem(){
addOrUpdateUrlParam('Search',document.getElementById("inputsearch").value);
}
function addOrUpdateUrlParam(name, value)
{
var href = window.location.href;
var regex = new RegExp("[&\\?]" + name + "=");
if(value=="")
value="0";
if(regex.test(href))
{
regex = new RegExp("([&\\?])" + name + "=\\w+");
window.location.href = href.replace(regex, "$1" + name + "=" + value);
}
else
{
if(href.indexOf("?") > -1)
window.location.href = href + "&" + name + "=" + value;
else
window.location.href = href + "?" + name + "=" + value;
}
}
</script>
</form>
</body>
</html>
Iscriviti a:
Post (Atom)