C# Secondes naar D/U/M (Opgelost)
larssy1 - 20/11/2011 18:34 (laatste wijziging 20/11/2011 18:35)
MySQL 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:
private string convertSecondsToTime(double setSeconds)
{
string time = string.Empty;
double seconds = setSeconds;
int days = Convert.ToInt32(Math.Floor(seconds / 86400));
seconds -= days * 86400;
int hours = Convert.ToInt32(Math.Floor(seconds / 3600));
seconds -= hours * 3600;
int minutes = Convert.ToInt32(Math.Floor(seconds / 60));
time = days + "D " + hours + "H " + minutes + "M";
return time;
}
private string convertSecondsToTime( double setSeconds)
{
string time = string .Empty ;
double seconds = setSeconds;
int days = Convert.ToInt32 ( Math.Floor ( seconds / 86400 ) ) ;
seconds -= days * 86400 ;
int hours = Convert.ToInt32 ( Math.Floor ( seconds / 3600 ) ) ;
seconds -= hours * 3600 ;
int minutes = Convert.ToInt32 ( Math.Floor ( seconds / 60 ) ) ;
time = days + "D " + hours + "H " + minutes + "M" ;
return time;
}
met waarde:
Het rare is dat hij t met deze code wel doet:
string[] playtimeValue = statistics.playtime.Split('.');
double playtime = Convert.ToDouble(playtimeValue[0]);
this.txtPlayTime.Text = convertSecondsToTime(playtime).ToString();
string [ ] playtimeValue = statistics.playtime .Split ( '.' ) ;
double playtime = Convert.ToDouble ( playtimeValue[ 0 ] ) ;
this .txtPlayTime .Text = convertSecondsToTime( playtime) .ToString ( ) ;
maar met deze geeft hij normale tijd *10 weer op device, maar niet op emulator:
double hoursTotal = hoursAssault + hoursEngineer + hoursSupport + hoursRecon;
this.txtTimeTotal.Text = hoursTotal.ToString();
double hoursTotal = hoursAssault + hoursEngineer + hoursSupport + hoursRecon;
this .txtTimeTotal .Text = hoursTotal.ToString ( ) ;
8 antwoorden
Gesponsorde links
Ontani - 20/11/2011 18:53 (laatste wijziging 20/11/2011 18:54)
-1
in vb.net
Dim dt As New Date(1990, 1, 1)
dt = dt.AddSeconds(1210210111)
dt.Day
dt.Month
dt.Year
dt.Hour
dt.Minute
dt.Second
Dim dt As New Date ( 1990 , 1 , 1 )
dt = dt.AddSeconds ( 1210210111 )
dt.Day
dt.Month
dt.Year
dt.Hour
dt.Minute
dt.Second
larssy1 - 20/11/2011 19:29 (laatste wijziging 20/11/2011 19:51)
MySQL beginner
Werkt niet in C#..
private string convertTime(double seconds)
{
DateTime dt = new DateTime(1990, 1, 1);
dt.AddSeconds(seconds);
string days = dt.Day.ToString();
string hours = dt.Hour.ToString();
string minutes = dt.Minute.ToString();
return dt.Day + "D " + dt.Hour + "H " + dt.Minute + "M";
}
private string convertTime( double seconds)
{
DateTime dt
= new DateTime
( 1990 ,
1 ,
1 ) ; dt.AddSeconds ( seconds) ;
string days = dt.Day .ToString ( ) ;
string hours = dt.Hour .ToString ( ) ;
string minutes = dt.Minute .ToString ( ) ;
return dt.Day + "D " + dt.Hour + "H " + dt.Minute + "M" ;
}
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:
string[] playtimeValue = statistics.playtime.Split('.');
double playtime = Convert.ToDouble(playtimeValue[0]);
this.txtPlayTime.Text = convertSecondsToTime(playtime).ToString();
string [ ] playtimeValue = statistics.playtime .Split ( '.' ) ;
double playtime = Convert.ToDouble ( playtimeValue[ 0 ] ) ;
this .txtPlayTime .Text = convertSecondsToTime( playtime) .ToString ( ) ;
larssy1 - 20/11/2011 20:04
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.
larssy1 - 20/11/2011 20:25
MySQL beginner
hmm, dus Replace(a, b) hoeft niet te werken als je bijv. in america zit.. >.<
larssy1 - 20/11/2011 21:10 (laatste wijziging 20/11/2011 21:13)
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.