2023-03-12, 14:47
  #13
Medlem
Citat:
Ursprungligen postat av SvenHelsing
Som jag sa så är informationen för när de infaller lättillgänglig. Exempelvis är midsommarafton den lördag som infaller mellan 20-26 juni.

Citat:
Ursprungligen postat av PrippsFat
Det var en bra länk att titta på. Tackar!
Jag frågade ChatGPT och fick ett ganska intressant svar. Jag vet inte om det är korrekt men det ser ytligt bra ut.

Kod:
using System;

public static 
DateTime[] GetSwedishNationalHolidays(int year)
{
    
DateTime[] holidays = new DateTime[10]; // there are 10 Swedish national holidays
    
    // New Year's Day
    
holidays[0] = new DateTime(year11);
    
    
// Epiphany
    
holidays[1] = new DateTime(year16);
    
    
// Easter Sunday
    
DateTime easterSunday CalculateEasterSunday(year);
    
    
// Maundy Thursday
    
holidays[2] = easterSunday.AddDays(-3);
    
    
// Good Friday
    
holidays[3] = easterSunday.AddDays(-2);
    
    
// Easter Monday
    
holidays[4] = easterSunday.AddDays(1);
    
    
// May Day
    
holidays[5] = new DateTime(year51);
    
    
// Ascension Day
    
holidays[6] = easterSunday.AddDays(39);
    
    
// National Day
    
holidays[7] = new DateTime(year66);
    
    
// Midsummer's Day
    
holidays[8] = CalculateMidsummersDay(year);
    
    
// Christmas Day
    
holidays[9] = new DateTime(year1225);
    
    return 
holidays;
}

// Calculates the date of Easter Sunday for a given year
private static DateTime CalculateEasterSunday(int year)
{
    
int a year 19;
    
int b year 100;
    
int c year 100;
    
int d 4;
    
int e 4;
    
int f = (8) / 25;
    
int g = (1) / 3;
    
int h = (19 15) % 30;
    
int i 4;
    
int k 4;
    
int l = (32 k) % 7;
    
int m = (11 22 l) / 451;
    
int month = (114) / 31;
    
int day = ((114) % 31) + 1;
    return new 
DateTime(yearmonthday);
}

// Calculates the date of Midsummer's Day (the Saturday between June 20 and June 26) for a given year
private static DateTime CalculateMidsummersDay(int year)
{
    
DateTime june20 = new DateTime(year620);
    
DateTime saturday june20.AddDays(- (int)june20.DayOfWeek);
    return 
saturday;

Citera
2023-03-12, 14:48
  #14
Citat:
Ursprungligen postat av Binary
Jag frågade ChatGPT och fick ett ganska intressant svar. Jag vet inte om det är korrekt men det ser ytligt bra ut.

Kod:
using System;

public static 
DateTime[] GetSwedishNationalHolidays(int year)
{
    
DateTime[] holidays = new DateTime[10]; // there are 10 Swedish national holidays
    
    // New Year's Day
    
holidays[0] = new DateTime(year11);
    
    
// Epiphany
    
holidays[1] = new DateTime(year16);
    
    
// Easter Sunday
    
DateTime easterSunday CalculateEasterSunday(year);
    
    
// Maundy Thursday
    
holidays[2] = easterSunday.AddDays(-3);
    
    
// Good Friday
    
holidays[3] = easterSunday.AddDays(-2);
    
    
// Easter Monday
    
holidays[4] = easterSunday.AddDays(1);
    
    
// May Day
    
holidays[5] = new DateTime(year51);
    
    
// Ascension Day
    
holidays[6] = easterSunday.AddDays(39);
    
    
// National Day
    
holidays[7] = new DateTime(year66);
    
    
// Midsummer's Day
    
holidays[8] = CalculateMidsummersDay(year);
    
    
// Christmas Day
    
holidays[9] = new DateTime(year1225);
    
    return 
holidays;
}

// Calculates the date of Easter Sunday for a given year
private static DateTime CalculateEasterSunday(int year)
{
    
int a year 19;
    
int b year 100;
    
int c year 100;
    
int d 4;
    
int e 4;
    
int f = (8) / 25;
    
int g = (1) / 3;
    
int h = (19 15) % 30;
    
int i 4;
    
int k 4;
    
int l = (32 k) % 7;
    
int m = (11 22 l) / 451;
    
int month = (114) / 31;
    
int day = ((114) % 31) + 1;
    return new 
DateTime(yearmonthday);
}

// Calculates the date of Midsummer's Day (the Saturday between June 20 and June 26) for a given year
private static DateTime CalculateMidsummersDay(int year)
{
    
DateTime june20 = new DateTime(year620);
    
DateTime saturday june20.AddDays(- (int)june20.DayOfWeek);
    return 
saturday;

ChatGPT har väldigt ofta fel
Citera
2023-03-12, 14:53
  #15
Medlem
PrippsFats avatar
Citat:
Ursprungligen postat av Jonas1968
Är väl så att söndagen före påsk är första söndagen efter första fullmånen efter vårdagjämningen. Man måste alltså koda in månens faser för att få ett program att kunna räkna ut påsken så påsken måste ju vara den röda dag som blir krångligast att räkna ut i ett program?
Är det på den nivån, så blir det jobbigt Då är det nästan lika bra att hårdkoda in alla dagar 10 år framåt
Citera
2023-03-12, 14:57
  #16
Medlem
TELAVIV91s avatar
Jag skulle nog matat in de aktuella dagarna i en enkel textfil och låtit programmet hämta data därifrån. 10-15 år tar inte lång tid att knacka in.
Citera
2023-03-12, 15:02
  #17
Medlem
PrippsFats avatar
Citat:
Ursprungligen postat av TELAVIV91
Jag skulle nog matat in de aktuella dagarna i en enkel textfil och låtit programmet hämta data därifrån. 10-15 år tar inte lång tid att knacka in.
Är lite inne på det med, är en enkel, men kanske ful lösning.

Fast nu verkar ju det finnas något som heter nager med.
Citera
2023-03-12, 15:13
  #18
Medlem
boll-svantes avatar
Citat:
Ursprungligen postat av PrippsFat
Är lite inne på det med, är en enkel, men kanske ful lösning.
Kanske ändå det bästa, då politikerna ju ibland får för sig att flytta/byta helgdagar, då är det ju smidigt att bara kunna justera en liten fil
Citera
2023-03-12, 15:20
  #19
Medlem
Citat:
Ursprungligen postat av SvenHelsing
På wikipedia står alla helgdagar listade. Om du klickar på dem så står det förmodligen något som kan hjälpa dig koda det hela.

https://sv.wikipedia.org/wiki/Helgdagar_i_Sverige

Citat:
Ursprungligen postat av PrippsFat
Hmm nej, det är en afton, alltså dag före röd dag. Röda dagar är väl juldagen, annandag jul mm.

Problemet är ju att vissa dagar, typ påsk, rullar runt på olika datum år för år.

Ser väl ut som att det bara är påsken (det mesta utgår från påskdagen) man behöver några mer komplicerade beräkningar för:

"Påsken är en rörlig helg och infaller enligt ett beslut som togs under kyrkomötet i Nicaea år 325, på första söndagen efter första fullmånen efter vårdagjämningen."

Vill man gena lite så infaller vårdagjämningen alltid den 20 mars fram till 2048..

"vårdagjämningen inträffar alltid den 20 mars fram till 2048, då vårdagjämning för första gången på länge inträffar den 19 mars. Allt gäller under förutsättningen att vi fortsätter använda oss av normaltid eller vintertid vid vårdagjämning."

https://www.astroinfo.se/vardagjamning-2021/

För att beräkna när fullmåne infaller finns antagligen Astro API:er i de flesta programspråk.
__________________
Senast redigerad av B.R.Donut 2023-03-12 kl. 15:34.
Citera
2023-03-12, 15:33
  #20
Medlem
Citat:
Ursprungligen postat av Binary
Jag frågade ChatGPT och fick ett ganska intressant svar. Jag vet inte om det är korrekt men det ser ytligt bra ut.

Haha, ja det brukar se bra ut, men det jag prövade var helt åt skogen. Koden gav ett helt annat svar än det den skrev i text.

Med lite tur kanske det funkar beroende på vilket språk man väljer som output, men skulle inte lita på det utan att kontrollera noggrant.
Citera
2023-03-12, 19:11
  #21
Medlem
Enterprises avatar
TS: Kolla in detta API.
https://www.arbetsdag.se/api
Citera
2023-03-12, 19:39
  #22
Medlem
Neksnors avatar
Citat:
Ursprungligen postat av PrippsFat
Är det på den nivån, så blir det jobbigt Då är det nästan lika bra att hårdkoda in alla dagar 10 år framåt
Påskdagen kan relativt lätt beräknas, se https://sv.wikipedia.org/wiki/Påskda...skdagens_datum
Om jag minns rätt så är kyrkoåret, och därmed antagligen rörliga kristna helger (ex långfredag), till viss del baserat på när påsken infaller.
Citera
2023-03-12, 21:06
  #23
Medlem
IRMEs avatar
Citat:
Ursprungligen postat av PrippsFat
Tanken är att jag skall få fram om det är en röd dag i framtiden med. Tex år 2025. Förstår inte hur dagarna flyttas mellan åren.
Är ju inga problem att lista upp dem hårdkodat så för ett år.

Du kan ju inte veta om det stiftas nya röda dagar eller inte. Tänk om söndagar slutar vara "röda"?. Du får helt enkelt crawla lagarna efter informationen.

https://www.riksdagen.se/sv/dokument...r_sfs-1989-253
Citera
2023-03-12, 21:08
  #24
Medlem
IRMEs avatar
Påskdagen är ju mest spännande att räkna ut korrekt.


Påskdagen
Söndagen närmast efter den fullmåne som infaller på eller närmast efter den 21 mars.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in