programmeervraagje Datums
Moderator: Moderators
- Swets
- Berichten: 2690
- Lid geworden op: 09 feb 2007 21:49
- Locatie: krimpen aan den IJssel
- Contacteer:
programmeervraagje Datums
Denk gooi het hier ook ff neer, tis wel een cnc forum, maar krijg er altijd best wel veel programmeer hulp.. :-)
ik moet iets schrijven in een plc, ik moet 2 datums met elkaar vergelijken, en uitrekenen hoeveel dagen er tussen zit....
maar ik zit natuurlijk dat niet alle maanden even veel dagen hebben.... en schrikkeljaren.. enz enz
dus ben een beetje opzoek hoe ik dat nu het makkelijkste kan doen?
ik moet iets schrijven in een plc, ik moet 2 datums met elkaar vergelijken, en uitrekenen hoeveel dagen er tussen zit....
maar ik zit natuurlijk dat niet alle maanden even veel dagen hebben.... en schrikkeljaren.. enz enz
dus ben een beetje opzoek hoe ik dat nu het makkelijkste kan doen?
http://www.arjan-swets.com (met cnc filmpjes)
Re: programmeervraagje Datums
350 kilo 1250x1250 aluminium portaalfrees:
http://cnczone.nl/viewtopic.php?f=8&t=13039
Beginnen met CNC? Ontwerpen, bouwen, of toch kopen?
http://cnczone.nl/viewtopic.php?f=8&t=15481
http://cnczone.nl/viewtopic.php?f=8&t=13039
Beginnen met CNC? Ontwerpen, bouwen, of toch kopen?
http://cnczone.nl/viewtopic.php?f=8&t=15481
Re: programmeervraagje Datums
Als je in Google "days between dates" in typt krijg je allerlei oplossingen in C java of python.
Re: programmeervraagje Datums
kun je niet gewoon simpelweg het verschil in uren tellen en dat omrekenen naar aantal dagen?
Re: programmeervraagje Datums
In C# en andere programmeertalen is het gewoon datum2 van datum1 aftrekken. Vervolgens heeft de C# timespan (class) de mogelijkheid om het aantal dagen op te vragen (of het aantal uren,seconden, etc).
Meestal worden datums als het aantal seconden verstreken sinds een startdatum bewaard in een floating point of longlong waarde.
Ook de PLC zal wel zoiets hebben.
Meestal worden datums als het aantal seconden verstreken sinds een startdatum bewaard in een floating point of longlong waarde.
Ook de PLC zal wel zoiets hebben.
Code: Selecteer alles
public void AantalDagen()
{
DateTime D1 = new DateTime(2020, 1, 1);
DateTime D2 = new DateTime(2020, 31, 7);
TimeSpan Delta = D2.Subtract(D1);
Debug.WriteLine("Aantal dagen op 3 decimalen keurig: {0:0.000}", Delta.TotalDays);
}
There are only 2 limits, the sky and your imagination
- Swets
- Berichten: 2690
- Lid geworden op: 09 feb 2007 21:49
- Locatie: krimpen aan den IJssel
- Contacteer:
Re: programmeervraagje Datums
bedankt.... ik ga het allemaal eens bekijken.....
ik weet niet of er echt van die tijd/datum functies in de plc zitten.... Ik denk het haast niet... maar ik ga eens zoeken...
en ik ga die linkjes eens bekijken..... maar volgens mij is het allemaal nog niet zo makkelijk....
ik denk als ik iets ga maken, dat ik ten eerst iets moet maken hoeveel dagen elke maand heeft
en dan is februari natuurlijk de lastigste maand....
ik weet niet of er echt van die tijd/datum functies in de plc zitten.... Ik denk het haast niet... maar ik ga eens zoeken...
en ik ga die linkjes eens bekijken..... maar volgens mij is het allemaal nog niet zo makkelijk....
ik denk als ik iets ga maken, dat ik ten eerst iets moet maken hoeveel dagen elke maand heeft
en dan is februari natuurlijk de lastigste maand....
http://www.arjan-swets.com (met cnc filmpjes)
Re: programmeervraagje Datums
Code: Selecteer alles
Int32[] DaysOfMonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
There are only 2 limits, the sky and your imagination
Re: programmeervraagje Datums
Misschien niet onbelangrijk, naar om wat voor een PLC gaat het?
- Swets
- Berichten: 2690
- Lid geworden op: 09 feb 2007 21:49
- Locatie: krimpen aan den IJssel
- Contacteer:
Re: programmeervraagje Datums
M340 van schneider, , programeer pakket EcoStructure Contol Expert...
ik zit nu even te kijken tussen de standaard functie's...
Ik zie een MULTIME en een DIVTIME
ik heb een TIME_TO_
meer zie ik niet.... ?
ik zit nu even te kijken tussen de standaard functie's...
Ik zie een MULTIME en een DIVTIME
ik heb een TIME_TO_
meer zie ik niet.... ?
http://www.arjan-swets.com (met cnc filmpjes)
- Swets
- Berichten: 2690
- Lid geworden op: 09 feb 2007 21:49
- Locatie: krimpen aan den IJssel
- Contacteer:
Re: programmeervraagje Datums
ik heb dit gevonden:
https://www.omnicalculator.com/everyday ... ween-dates
maar iets gaat er nog niet goed bij mij, want als ik start jaar het zelfde zet,,,, ik doe als eind vandaag, 30-5-2023 maar ik zet de start datum op 16-5-2023 krijg ik toch 365 dagen?
ik snap dit ook niet helemaal:
en ik snap ook even niet dat ik op die pagina, de dagen nergens terug vind... ik zie de jaren om rekenen naar dagen, dan de maanden om reken naar dagen, maar niets over de dagen ?
ik had nu dit:
https://www.omnicalculator.com/everyday ... ween-dates
maar iets gaat er nog niet goed bij mij, want als ik start jaar het zelfde zet,,,, ik doe als eind vandaag, 30-5-2023 maar ik zet de start datum op 16-5-2023 krijg ik toch 365 dagen?
ik snap dit ook niet helemaal:
en ik snap ook even niet dat ik op die pagina, de dagen nergens terug vind... ik zie de jaren om rekenen naar dagen, dan de maanden om reken naar dagen, maar niets over de dagen ?
ik had nu dit:
Code: Selecteer alles
startDays :=Start_Day;
startMonth :=Start_Month;
startYear :=Start_Year;
endDays :=End_Day;
endMonth :=End_Month;
endYear :=End_Year;
years:=int_to_real(End_Year-Start_Year);
days1:=(years*365.25);
month1:=12-startMonth;
month2:=End_Month;
monthTotal:=month1+month2;
days2:=(int_to_real(monthTotal) * (365.25/12.0));
Days:=real_to_int(days1+days2);
http://www.arjan-swets.com (met cnc filmpjes)
- Swets
- Berichten: 2690
- Lid geworden op: 09 feb 2007 21:49
- Locatie: krimpen aan den IJssel
- Contacteer:
Re: programmeervraagje Datums
Ik geloof dat ik het heb, althans, ik krijg dezelfde antwoorden als de webpagina...
ik heb nu dus dit
Code: Selecteer alles
daysTotal:=0;
startDays :=Start_Day;
startMonth :=Start_Month;
startYear :=Start_Year;
endDays :=End_Day;
endMonth :=End_Month;
endYear :=End_Year;
DaysInMonth[1] :=31;
DaysInMonth[2] :=28;
DaysInMonth[3] :=31;
DaysInMonth[4] :=30;
DaysInMonth[5] :=31;
DaysInMonth[6] :=30;
DaysInMonth[7] :=31;
DaysInMonth[8] :=31;
DaysInMonth[9] :=30;
DaysInMonth[10] :=31;
DaysInMonth[11] :=30;
DaysInMonth[12] :=31;
(* __________________________________________________________________________________________*)
Years:=int_to_real(End_Year-Start_Year);
daysYears:=real_to_int(years*365.25);
(* __________________________________________________________________________________________*)
if startYear=endYear and startMonth=endMonth then (* same Year , Same Month *)
test1:=test1 xor 1;
Days:=endDays-startDays;
end_if;
(* __________________________________________________________________________________________*)
if startYear=endYear and startMonth<endMonth then (* same Year, Different Month *)
test2:=test2 xor 1;
for t:=startMonth to endMonth-1 do
daysTotal:= daysTotal+DaysInMonth[t];
end_for;
Days:=(endDays-startDays)+daysTotal;
end_if;
if startYear<endYear and startMonth=endMonth then (* Different Year , Same Month *)
test3:=test3 xor 1;
Days:=(endDays-startDays)+ daysYears;
end_if;
(* __________________________________________________________________________________________*)
if startYear<endYear and startMonth<endMonth then (* Different Year, Different Month *)
test4:=test4 xor 1;
for t:=startMonth to endMonth-1 do
daysTotal:= daysTotal+DaysInMonth[t];
end_for;
Days:=(endDays-startDays)+daysTotal+ daysYears;
end_if;
(* __________________________________________________________________________________________*)
if startYear<endYear and startMonth>endMonth then (* Different Year, Different Month *)
test5:=test5 xor 1;
for t:=StartMonth to 12 do
daysTotal:= daysTotal+DaysInMonth[t];
end_for;
for t:=1 to endMonth-1 do
daysTotal:= daysTotal+DaysInMonth[t];
end_for;
Days:=(endDays-startDays)+daysTotal+ (daysYears-365);
end_if;
http://www.arjan-swets.com (met cnc filmpjes)
Re: programmeervraagje Datums
ik heb niet de hele code begrepen, maar houd je ook rekening met schrikkeljaren? Ik zie voor februari alleen 28 dagen staan. Of flik je daar verderop nog een kunstje mee? Iets van jaartal/4=geheel getal?
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. - Robert Heinlein
- Swets
- Berichten: 2690
- Lid geworden op: 09 feb 2007 21:49
- Locatie: krimpen aan den IJssel
- Contacteer:
Re: programmeervraagje Datums
ja dat snap ik ook nog niet helemaal
bij het aantal dagen in een jaar zit wel dit: daysYears:=real_to_int(years*365.25);
dus die .25, dus bij 4 jaren komt er eentje bij....
en net wat ik zeg, als ik mij verhaaltje check tov dat online verhaal, krijg ik de zelfde waarde.... maar ik heb er ook nog niet een super gevoel bij...
:-)
de bedoeling van het verhaal is dus om te kijken hoe lang de installatie draait.... dus ergens komt (vast) de start datum te staan, en ik wil dus kijken aan de huidige datum ( vanuit de klok chip) kijken hoeveel dagen er verlopen zijn tov de start datum...
maar ik zit dus ook een beetje met dat schrikkeljaar verhaal? weet ook nog niet goed hoe ik dat ff kan testen... :-)
best wel lastig allemaal.... vind ik toch altijd met tijd en datum verhaaltjes... 60,12,24 30,31,28 allemaal van die rare getallen... :-) en dan weer zon uitzondering, om de 4 jaar.... pfffff...
http://www.arjan-swets.com (met cnc filmpjes)