El código en cuestión está abajo:
public static string ChangePersianDate(DateTime dateTime)
{
System.Globalization.GregorianCalendar PC = new System.Globalization.GregorianCalendar();
PC.CalendarType = System.Globalization.GregorianCalendarTypes.USEnglish;
return
PC.GetYear(dateTime).ToString()
+ "/"
+ PC.GetMonth(dateTime).ToString()
+ "/"
+ PC.GetDayOfMonth(dateTime).ToString()
+ ""
+ PC.GetHour(dateTime).ToString()
+ ":"
+ PC.GetMinute(dateTime).ToString()
+ ":"
+ PC.GetSecond(dateTime).ToString()
+ " "
????????????????
}
¿Cómo puedo obtener el AM / PM del dateTime
valor?
c#
.net
datetime
datetime-format
gregorian-calendar
SilverLight
fuente
fuente
DateTime
que esto. Ver msdn.microsoft.com/en-us/library/8kb3ddd4.aspxdateTime.ToString("tt");
Respuestas:
Qué tal si:
fuente
CultureInfo.InvariantCulture
ToString("tt", System.Globalization.CultureInfo.InvariantCulture)
DateTime.Now.AddHours(12).ToString("tt", CultureInfo.InvariantCulture)
Esto debería darte el valor de cadena de la hora. Debería adjuntarse am / pm.
También puede mirar el tema relacionado:
¿Cómo se obtiene la hora actual del día?
fuente
hh
ya que su representación actual sale en 24 horas con am y pm, lo cual es un poco inútilEl
DateTime
siempre debe estar internamente en el calendario "americano" (gregoriano). Entonces si lo hacesdeberías obtener lo que quieres en muchas menos líneas.
fuente
Muy simple usando el formato de cadena
en
.ToSTring("") :
si usa "hh" - >> La hora, usando un reloj de 12 horas de 01 a 12.
si usa "HH" - >> La hora, usando un reloj de 24 horas de 00 a 23.
si agrega "tt" - >> El designador Am / Pm.
ejemplo de conversión de 23:12 a 11:12 Pm:
espere un segundo, eso no es todo lo que necesita para preocuparse por otra cosa, es la cultura del sistema porque el mismo código ejecutado en ventanas con otro idioma especialmente con idioma de cultura diferente generará resultados diferentes con el mismo código
Un ejemplo de ventanas configuradas con la cultura árabe del idioma se mostrará así:
// 23:12 م
م significa Tarde (primer leter de مساء).
en otro sistema, la cultura dependerá de lo que esté configurado en la opción regional de Windows y el idioma, mostrará // 23:12 du.
puede cambiar entre diferentes formatos en el panel de control de Windows en Windows regional e idioma -> formato actual (cuadro combinado) y cambiar ... aplicarlo haga una reconstrucción (ejecución) de su aplicación y vea de qué está hablando iam.
fácil simplemente agregando dos líneas: ->
el primer paso agregar
using System.Globalization;
encima de su códigoy modificando el código anterior para que sea así:
InvariantCulture => usando el formato predeterminado en inglés.
otra pregunta ¿Quiero que el pm esté en árabe o en un idioma específico, incluso si uso ventanas configuradas en inglés (u otro idioma) en formato regional?
Soción para el ejemplo árabe:
esto mostrará // 23:12 م
evento si mi sistema está configurado en un formato de región en inglés. puede cambiar "ar-AE" si desea otro formato de idioma. Hay una lista de cada idioma y su formato.
ejemplos:
hazme saber si tienes otra pregunta.
fuente
Sé que esto podría parecer extremadamente tarde ... sin embargo, puede ayudar a alguien por ahí
Quería obtener la parte AM PM de la fecha, así que utilicé lo que Andy me aconsejó:
Utilicé esa parte para construir una Ruta para guardar mis archivos. ¡Construí mis suposiciones de que obtendré AM o PM y nada más!
sin embargo, cuando utilicé una PC que su cultura no es el inglés ... (en mi caso ÁRABE) ... mi aplicación falló porque el formato "tt" devolvió algo nuevo, no AM ni PM (م o ص) ...
Entonces, la solución a esto fue ignorar la cultura agregando el segundo argumento de la siguiente manera:
.. por supuesto, debe agregar: using System.Globalization; encima de tu archivo espero que ayude a alguien :)
fuente
es bastante simple
fuente
Para su ejemplo, pero hay mejores formas de formatear fecha y hora.
fuente
De: http://www.csharp-examples.net/string-format-datetime/
fuente
Algo así como
bool isPM = GetHour() > 11
. Pero si desea formatear una fecha en una cadena, no debería necesitar hacerlo usted mismo. Utilice las funciones de formato de fecha para eso.fuente
Puedes probarlo de esta manera
La salida será así:
o
fuente
Now
Aquí hay una manera más fácil de escribir el formato de hora
(hh:mm:ss tt)
y mostrarlo por separado si lo desea.o simplemente:
fuente
La respuesta de @ Andy está bien. Pero si desea mostrar la hora sin formato de 24 horas, puede seguir de esta manera
Después de eso, debería tener tiempo como "10:35:20 PM" o "10:35:20 AM"
fuente
fuente
Aquí hay un código de ejemplo:
fuente
ToLongTimeString()
devuelve un valor basado en la cultura del hilo actual. Y a diferencia de algunas de las soluciones similares dadas en otras respuestas, este código ni siquiera funcionará si configura la cultura del hilo enInvariantCulture
, porque la cultura invariante,LongTimePattern
que es lo que determina el valor de retorno de,ToLongTimeString()
esHH:mm:ss
.