login  Naam:   Wachtwoord: 
Registreer je!
 Forum

C# Secondes naar D/U/M (Opgelost)

Offline larssy1 - 20/11/2011 18:34 (laatste wijziging 20/11/2011 18:35)
Avatar van larssy1MySQL beginner Beste mensen,,

Ik ben bezig met het programmeren voor de windows phone, echt doet er zich een uitermate raar probleem voor.

Alles klopt, en nu wil ik dus secondes (double) converteren naar Dagen / Uren / Minuten.

Ook dit lukt, zolang ik het test met de emulator.
Publish ik de applicatie op mijn Windows Phone, dan doet hij in 1x alle waardes * 10..??

Iemand die hier meer van weet??

De code:
  1. private string convertSecondsToTime(double setSeconds)
  2. {
  3. string time = string.Empty;
  4. double seconds = setSeconds;
  5.  
  6. int days = Convert.ToInt32(Math.Floor(seconds / 86400));
  7. seconds -= days * 86400;
  8. int hours = Convert.ToInt32(Math.Floor(seconds / 3600));
  9. seconds -= hours * 3600;
  10. int minutes = Convert.ToInt32(Math.Floor(seconds / 60));
  11.  
  12. time = days + "D " + hours + "H " + minutes + "M";
  13. return time;
  14. }


met waarde:
  1. [time] => 46783.5


Het rare is dat hij t met deze code wel doet:
  1. string[] playtimeValue = statistics.playtime.Split('.');
  2. double playtime = Convert.ToDouble(playtimeValue[0]);
  3. this.txtPlayTime.Text = convertSecondsToTime(playtime).ToString();


maar met deze geeft hij normale tijd *10 weer op device, maar niet op emulator:
  1. double hoursTotal = hoursAssault + hoursEngineer + hoursSupport + hoursRecon;
  2. this.txtTimeTotal.Text = hoursTotal.ToString();

8 antwoorden

Gesponsorde links
Offline Ontani - 20/11/2011 18:53 (laatste wijziging 20/11/2011 18:54)
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
in vb.net

  1. Dim dt As New Date(1990, 1, 1)
  2. dt = dt.AddSeconds(1210210111)
  3.  
  4. dt.Day
  5. dt.Month
  6. dt.Year
  7. dt.Hour
  8. dt.Minute
  9. dt.Second
Offline larssy1 - 20/11/2011 19:29 (laatste wijziging 20/11/2011 19:51)
Avatar van larssy1 MySQL beginner Werkt niet in C#..

  1. private string convertTime(double seconds)
  2. {
  3. DateTime dt = new DateTime(1990, 1, 1);
  4. dt.AddSeconds(seconds);
  5.  
  6. string days = dt.Day.ToString();
  7. string hours = dt.Hour.ToString();
  8. string minutes = dt.Minute.ToString();
  9.  
  10. return dt.Day + "D " + dt.Hour + "H " + dt.Minute + "M";
  11. }


Als seconds, zoals in mijn geval 94404.0 is, dan komt hij met 1D 0H 0M
-----------------
Heb het al gevonden, moet alleen nog kijken of het ook op het device zo goed is.
-----------------
Heb t probleem gevonden, hij wilt een string waarin een double staat bijv 196.46 niet converteren naar de juist double..

Hij maakt het dan 19646.0 , is er een manier om dit te vermijden, en gewoon echt als een double te zien?

zonder het op deze manier te doen:
  1. string[] playtimeValue = statistics.playtime.Split('.');
  2. double playtime = Convert.ToDouble(playtimeValue[0]);
  3. this.txtPlayTime.Text = convertSecondsToTime(playtime).ToString();
Offline Ontani - 20/11/2011 20:00
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
ik denk dat het probleem is dat een komma als , moet staan : 196,46 ipv 196.46 doe een replace op '.' naar ',' en uw probleem is opgelost 
Bedankt door: larssy1
Offline larssy1 - 20/11/2011 20:04
Avatar van larssy1 MySQL beginner
Ontani schreef:
ik denk dat het probleem is dat een komma als , moet staan : 196,46 ipv 196.46 doe een replace op '.' naar ',' en uw probleem is opgelost 

Hmm, ben benieuwd of het daaraan kan liggen, omdat ik zou denken dat het in engelse notatie zou moeten.

Zal even proberen.
Offline Ontani - 20/11/2011 20:06
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Houdt rekening met de locale van het device normaal gezien.
Offline larssy1 - 20/11/2011 20:25
Avatar van larssy1 MySQL beginner hmm, dus Replace(a, b) hoeft niet te werken als je bijv. in america zit.. >.<
Offline Ontani - 20/11/2011 20:52
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Het best is niet met string werken als het eigenlijk doubles zijn. Maar daar heb je waarschijnlijk zelf niets over te zeggen (aangezien het uit een andere file komt).
Offline larssy1 - 20/11/2011 21:10 (laatste wijziging 20/11/2011 21:13)
Avatar van larssy1 MySQL beginner Klopt, aangezien het een JSON file is, word alles standaard gezien als string.

Maargoed, ik moet dus de device 'formaat' ophalen, en op basis daarvan een punt of komma gebruiken?
---------
Ik zit trouwens te denken..

Ik zou mogelijk een simpele functie kunnen maken..
Waarin het volgende gebeurt:

1. functie met json time string
2. als json to double to string gelijk is aan time, ga verder
3. anders gebruik punt als scheidings teken.
4. return time
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.185s