2010-08-01 8 views
8

Tengo problemas para mostrar la hora en este formato: HH: mm: ss. No importa lo que intente, nunca lo obtengo en ese formato.Muestra la hora actual en este formato: HH: mm: ss

Quiero que el tiempo en la cultura de los Países Bajos sea "nl-NL".

Este fue uno de mis (aunque me olvidé de llevar la cuenta) Proveedores 1000a:

CultureInfo ci = new CultureInfo("nl-NL"); 

string s = DateTime.Now.TimeOfDay.ToString("HH:mm:ss", ci); 

¿Qué estoy haciendo mal?

+0

TimeSpan tiene un método ToString() débil. Cambiado en .NET 4.0, no para mejor. Simplemente pierda "TimeofDay". Darin lo hizo bien, por supuesto. –

Respuesta

6

Es necesario utilizar la clase TimeZoneInfo, aquí es cómo mostrar la hora actual en la zona horaria Eastern Standard Time en formato HH: ss:: mm

var timeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); 
string s = TimeZoneInfo.ConvertTime(DateTime.Now, timeZone).ToString("HH:mm:ss"); 

para descubrir todas las zonas horarias disponibles, puede utilizar

TimeZoneInfo.GetSystemTimeZones(); 

Mirando a través del valor de retorno de lo anterior, el ID de la zona horaria que necesita (Ámsterdam supongo) se llama Hora estándar de Europa occidental:

var timeZone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"); 
string s = TimeZoneInfo.ConvertTime(DateTime.Now, timeZone).ToString("HH:mm:ss"); 
+0

Gracias thebunringmonk! Eso hizo el truco. ¡No puedo creer cuánto tiempo he estado buscando una solución para arreglar esto! – Yustme

+0

@Yustme - No hay problema, me alegro de poder ayudar ;-) La globalización no está tan bien cubierta como no muchos de nosotros lo hacemos, me encontré con un buen artículo de MSDN hace un tiempo pero parece que no puedo encontrar el enlace ahora, publicaré una actualización si lo encuentro de nuevo. – theburningmonk

15
string s = DateTime.Now.ToString("HH:mm:ss"); 
+0

Hola, Probé también, agrega el material 'am/pm' detrás de él ¿Cómo puedo evitar eso? ¿No debería agregarse cultureinfo? – Yustme

+2

@Yustme: no se debe confundir entre 'DateTime.Now.TimeOfDay' y' DateTime.Now' – abatishchev

1

TimeOfDay es un TimeSpan, que tiene solo un ToString() sin parámetros. Uso Darin's solution o una muestra de MSDN documentation para TimeSpan.ToString()

+0

Aquí está el enlace: http://msdn.microsoft.com/en-us/library/system.datetime_properties.aspx – abatishchev

Cuestiones relacionadas