C# Uren, minuten en sec tussen 2 datums berekenen

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • NickvB
  • Registratie: December 2013
  • Laatst online: 30-07 00:20

NickvB

Web/App Developer

Topicstarter
Mijn vraag
Ik wil graag het aantal uren, minuten en seconden tot pasen berekenen met C#.

Relevante software en hardware die ik gebruik
Visual Studio 2015

Wat ik al gevonden of geprobeerd heb

[bDit is mijn huidige code het werkte wel voor de dagen maar niet voor de uren][/b]
DateTime huidigedatum = DateTime.Now; //Het ophalen van de huidige datum
DateTime pasen = new DateTime (2016,03,27); // De datum van pasen

TimeSpan ts = pasen - huidigedatum;
int uren = ts.Hours;

lbl1.Text = uren.ToString();

Iemand idee hoe ik dit kan berekenen?

Beste antwoord (via NickvB op 15-03-2016 20:43)


  • Moi_in_actie
  • Registratie: Maart 2007
  • Laatst online: 00:31
10 seconden op Google en je krijgt het volgende (werkt beiden prima):

code:
1
2
TimeSpan span = (target - DateTime.Now);
lbl1.Text = string.Format("{0:%d} dagen, {0:%h} uur, {0:%m} minuten, {0:%s} seconden", span);


Geeft als resultaat: 11 dagen, 3 uur, 18 minuten, 56 seconden

Of...

code:
1
2
TimeSpan span = (target - DateTime.Now);
lbl1.Text = string.Format("{0} uur, {1} minuten, {2} seconden", ((span.Days * 24) + span.Hours), span.Minutes, span.Seconds);


Dit geeft: 267 uur, 18 minuten, 56 secoden.


Zo lastig is een string.Format toch niet? :?

edit: er zijn vast nog elegantere oplossingen, maar dit is wat mij even te binnen schoot.

[ Voor 7% gewijzigd door Moi_in_actie op 15-03-2016 20:45 ]

Ryzen 9 9950X3D ~~ 32GB GSkill TridentZ 6000Mhz ~~ ASRock B850M Steel Legend ~~ Powercolor Hellhound RX9070XT

Alle reacties


Acties:
  • +2 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
De TimeSpan die gereturned wordt bevat toch alles wat je wil hebben :? Doe eens ts.ToString()? Heb je de documentatie überhaupt al eens gelezen?

[ Voor 58% gewijzigd door RobIII op 15-03-2016 19:48 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Probeer eens TotalHours

Acties:
  • 0 Henk 'm!

  • NickvB
  • Registratie: December 2013
  • Laatst online: 30-07 00:20

NickvB

Web/App Developer

Topicstarter
RobIII schreef op dinsdag 15 maart 2016 @ 19:44:
De TimeSpan die gereturned wordt bevat toch alles wat je wil hebben :? Doe eens ts.ToString()? Heb je de documentatie überhaupt al eens gelezen?
Dan krijg ik 11.03:55:19.7553083 als antwoord

Dit is de website btw
Afbeeldingslocatie: http://tweakers.net/ext/f/z7KnIG5ye0gDbIQLziIuew3v/full.jpg

[ Voor 8% gewijzigd door NickvB op 15-03-2016 20:10 ]


Acties:
  • 0 Henk 'm!

  • itarix
  • Registratie: Juli 2005
  • Laatst online: 15:13

itarix

404 soul not found

Ik heb al een aantal jaren meer geen C# meer geprogrammeerd maar met timeSpan.toString(String format) kun je het zelf fomatteren:

MSDN: TimeSpan.ToString Method (String) (System)

Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
Maar dat is de Pasen van de server. Niet die van de client.
JavaScript gebruiken?

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • NickvB
  • Registratie: December 2013
  • Laatst online: 30-07 00:20

NickvB

Web/App Developer

Topicstarter
itarix schreef op dinsdag 15 maart 2016 @ 20:14:
Ik heb al een aantal jaren meer geen C# meer geprogrammeerd maar met timeSpan.toString(String format) kun je het zelf fomatteren:

MSDN: TimeSpan.ToString Method (String) (System)
Maar ik heb het toch al geformatteerd?

Acties:
  • +1 Henk 'm!

  • Mschamp
  • Registratie: April 2014
  • Laatst online: 15:33
Normaal kunnen de verschillende delen van de timespan opgevraagd worden met de bijhorende properties: .Seconds, . Minutes, . Hours. Deze kan je dan zelf samenstellen met je tekst: MSDN: TimeSpan Structure (System)
De dagen worden dan wel niet meegenomen, maar dat kon opgevangen worden door uren=ts.Hours + 24*ts.Days

[ Voor 23% gewijzigd door Mschamp op 15-03-2016 20:32 ]


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Of gewoon TotalHours gebruiken :') Maarja lekker niet alle posts lezen.

Acties:
  • 0 Henk 'm!

  • NickvB
  • Registratie: December 2013
  • Laatst online: 30-07 00:20

NickvB

Web/App Developer

Topicstarter
Megamind schreef op dinsdag 15 maart 2016 @ 20:37:
Of gewoon TotalHours gebruiken :') Maarja lekker niet alle posts lezen.
Je bedoeld bij int uren = ts.Hours ? Want dat werkt namelijk niet

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Nee, TotalHours.

uren = ts.TotalHours;

Acties:
  • 0 Henk 'm!

  • Mschamp
  • Registratie: April 2014
  • Laatst online: 15:33
TotalHours geeft de volledige tijd omgerekend naar uren, en dus ook een kommagetal, dat is niet het formaat zoals gevraagd in uren, minuten en seconden.

Acties:
  • Beste antwoord
  • +3 Henk 'm!

  • Moi_in_actie
  • Registratie: Maart 2007
  • Laatst online: 00:31
10 seconden op Google en je krijgt het volgende (werkt beiden prima):

code:
1
2
TimeSpan span = (target - DateTime.Now);
lbl1.Text = string.Format("{0:%d} dagen, {0:%h} uur, {0:%m} minuten, {0:%s} seconden", span);


Geeft als resultaat: 11 dagen, 3 uur, 18 minuten, 56 seconden

Of...

code:
1
2
TimeSpan span = (target - DateTime.Now);
lbl1.Text = string.Format("{0} uur, {1} minuten, {2} seconden", ((span.Days * 24) + span.Hours), span.Minutes, span.Seconds);


Dit geeft: 267 uur, 18 minuten, 56 secoden.


Zo lastig is een string.Format toch niet? :?

edit: er zijn vast nog elegantere oplossingen, maar dit is wat mij even te binnen schoot.

[ Voor 7% gewijzigd door Moi_in_actie op 15-03-2016 20:45 ]

Ryzen 9 9950X3D ~~ 32GB GSkill TridentZ 6000Mhz ~~ ASRock B850M Steel Legend ~~ Powercolor Hellhound RX9070XT


Acties:
  • 0 Henk 'm!

  • NickvB
  • Registratie: December 2013
  • Laatst online: 30-07 00:20

NickvB

Web/App Developer

Topicstarter
Megamind schreef op dinsdag 15 maart 2016 @ 20:38:
Nee, TotalHours.

uren = ts.TotalHours;
Als ik dat doe krijg ik de foutmelding : cannot implicitly convert type 'double' to int. An explicit conversion exists

Acties:
  • 0 Henk 'm!

  • NickvB
  • Registratie: December 2013
  • Laatst online: 30-07 00:20

NickvB

Web/App Developer

Topicstarter
Moi_in_actie schreef op dinsdag 15 maart 2016 @ 20:42:
10 seconden op Google en je krijgt het volgende (werkt beiden prima):

code:
1
2
TimeSpan span = (target - DateTime.Now);
lbl1.Text = string.Format("{0:%d} dagen, {0:%h} uur, {0:%m} minuten, {0:%s} seconden", span);


Geeft als resultaat: 11 dagen, 3 uur, 18 minuten, 56 seconden

Of...

code:
1
2
TimeSpan span = (target - DateTime.Now);
lbl1.Text = string.Format("{0} uur, {1} minuten, {2} seconden", ((span.Days * 24) + span.Hours), span.Minutes, span.Seconds);


Dit geeft: 267 uur, 18 minuten, 56 secoden.


Zo lastig is een string.Format toch niet? :?

edit: er zijn vast nog elegantere oplossingen, maar dit is wat mij even te binnen schoot.
Super bedankt man het werkt!

Acties:
  • +1 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Zo zonde... :N
Give a man a fish and feed him for a day. Teach a man how to fish and feed him for a lifetime.

[ Voor 20% gewijzigd door RobIII op 15-03-2016 21:22 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • HuHu
  • Registratie: Maart 2005
  • Niet online
Moi_in_actie schreef op dinsdag 15 maart 2016 @ 20:42:
10 seconden op Google en je krijgt het volgende (werkt beiden prima):

code:
1
2
TimeSpan span = (target - DateTime.Now);
lbl1.Text = string.Format("{0:%d} dagen, {0:%h} uur, {0:%m} minuten, {0:%s} seconden", span);


Geeft als resultaat: 11 dagen, 3 uur, 18 minuten, 56 seconden

Of...

code:
1
2
TimeSpan span = (target - DateTime.Now);
lbl1.Text = string.Format("{0} uur, {1} minuten, {2} seconden", ((span.Days * 24) + span.Hours), span.Minutes, span.Seconds);


Dit geeft: 267 uur, 18 minuten, 56 secoden.


Zo lastig is een string.Format toch niet? :?

edit: er zijn vast nog elegantere oplossingen, maar dit is wat mij even te binnen schoot.
Deze berekening is onjuist, want zondag 27 maart is slechts 23 uur lang.

edit: ow wacht... 27 maart is het natuurlijk al Pasen :'). Dus bij toeval klopt je berekening wel.

[ Voor 5% gewijzigd door HuHu op 16-03-2016 09:22 ]

Pagina: 1