login  Naam:   Wachtwoord: 
Registreer je!
 Forum
Zoeken  Regels  Help
Categorieën > Csharp.NET

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

larssy1 – 20/11/2011 18:34 (Laatst gewijzigd op 20/11/2011 18:35)
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

Ontani – 20/11/2011 18:53 (Laatst gewijzigd op 20/11/2011 18:54)
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


larssy1 – 20/11/2011 19:29 (Laatst gewijzigd op 20/11/2011 19:51)
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();


Ontani – 20/11/2011 20:00
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 

larssy1 – 20/11/2011 20:04
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.

Ontani – 20/11/2011 20:06
Houdt rekening met de locale van het device normaal gezien.

larssy1 – 20/11/2011 20:25
hmm, dus Replace(a, b) hoeft niet te werken als je bijv. in america zit.. >.<

Ontani – 20/11/2011 20:52
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).

larssy1 – 20/11/2011 21:10 (Laatst gewijzigd op 20/11/2011 21:13)
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-2012 Sitemasters.be - Regels - Gehost door: Vircon - Laadtijd: 0.075s