2017-03-12 1 views
0

J'ai une section de code qui convertit la valeur d'horodatage unix à une heure standard, mais elle renvoie des heures, des minutes et des secondes. Je voudrais qu'il ne retourne que les heures et les minutes.Supprimer les secondes de DateTime C#

convertSunriseTime = UnixTimeStampToDateTime(currentSunriseTime).ToString(); 
convertSunsetTime = UnixTimeStampToDateTime(currentSunsetTime).ToString(); 

private static TimeSpan UnixTimeStampToDateTime(long unixTimeStamp) 
{ 
    DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); 
    dtDateTime = dtDateTime.AddSeconds(unixTimeStamp); 
    return dtDateTime.TimeOfDay; 
} 

et le moment où le varibles convertSunriseTime et convertSunsetTime reviennent avec secondes.

+0

Donc, vous voulez la précision * * du résultat se limiter à quelques minutes seulement? Comment voulez-vous gérer les horodatages d'arrondi avec un nombre de minutes non entier? – driis

+0

Eh bien avec des heures aussi bien. de dans le format de HH: mm. Cela ne me dérange pas vraiment que ce soit quelques minutes ou deux. – Ross

+1

Je pense que vous confondez la valeur avec le formatage. Nous pouvons vous dire comment arrondir la valeur à un nombre entier de minutes, mais le TimeSpan a toujours la même précision. Voulez-vous _former la valeur pour qu'elle affiche uniquement les heures et les minutes? _ – driis

Répondre

1

Donc, vous voulez formater votre valeur pour afficher des heures et des minutes. Vous pouvez le faire:

convertSunriseTime = UnixTimeStampToDateTime(currentSunriseTime).ToString("hh\\:mm"); 

Ici, le paramètre à la méthode ToString() précise que vous ne souhaitez à obtenir les pièces heures et minutes string résultant. C'est ce qu'on appelle un custom TimeSpan format string. Il y a aussi un ensemble de ceux standard: Standard TimeSpan format strings

0

cela peut faire le travail:

private static TimeSpan UnixTimeStampToDateTime(long unixTimeStamp) 
{ 
    DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc); 
    dtDateTime = dtDateTime.AddSeconds(unixTimeStamp); 
    dtDateTime = DateTime.FromMinutes((int)dtdateTime.TotalMinutes); 
    return dtDateTime.TimeOfDay; 
} 
0
Can you try this way

convertSunriseTime = UnixTimeStampToDateTime(currentSunriseTime).ToString();
convertSunsetTime = UnixTimeStampToDateTime(currentSunsetTime).ToString();

<pre>private static TimeSpan UnixTimeStampToDateTime(long unixTimeStamp) </pre> 
<pre>{</pre> 
     <pre>DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);</pre> 
    <pre>dtDateTime = dtDateTime.AddSeconds(unixTimeStamp);</pre> 
     <pre>return dtDateTime.TimeOfDay;</pre> 
<pre>}</pre>