Comment convertir DateTime dans certains fuseau horaire?
J'ai du mal à comprendre comment UTC œuvres.
Que j'ai à faire ce qui suit, mais je suis toujours confus si j'avais eu le bon résultat.
Objectifs:
- S'assurer que tous enregistré des dates dans la Base de données sont au format UTC
- Mise à jour DefaultTimezone est à Manille temps
- S'assurer que tous retournés dates sont à Manille Temps
Sorte que le code est:
public ConvertDate(DateTime? dateTime)
{
if (dateTime != null)
{
Value = (DateTime)dateTime;
TimeZone = GetFromConfig.DefaultTimeZone();
}
}
public ConvertDate(DateTime? dateTime, int GMTTimeZone)
{
if (dateTime != null)
{
Value = (DateTime)dateTime;
TimeZone = GMTTimeZone;
}
}
public int TimeZone
{
get { return m_TimeZone; }
set { m_TimeZone = value; }
}
DateTime m_Value;
public DateTime Value
{
get { return m_Value; }
set
{
m_Value = value;
DateTime converted = m_Value.ToUniversalTime().ToLocalTime();
}
}
Exemple d'utilisation:
DateTime SampleInputFromUser = new DateTime(2012, 1, 22);
ConvertDate newConversion = new ConvertDate(SampleInputFromUser, 21);
DateTime answer = newConversion.Value;
Maintenant, je suis confus pour 'Fuseau horaire'. Je ne sais pas comment l'utiliser pour obtenir les objectifs.
J'espère que vous comprenez ma question et avoir l'idée d'obtenir les objectifs de fait.
Modifier
Selon @raveturned réponse, j'obtiens ce code suivant:
***Ajout de ConvertDate méthode
TimeZoneInfo timeInfo = TimeZoneInfo.FindSystemTimeZoneById(GetFromConfig.ManilaTimeZoneKey());
ManilaTime = TimeZoneInfo.ConvertTime(dateTime.Value, TimeZoneInfo.Local, timeInfo).ToUniversalTime();
**Nouvelle Propriété
DateTime _ManilaTime;
public DateTime ManilaTime
{
get { return _ManilaTime; }
set { _ManilaTime = value; }
}
- Double Possible de stackoverflow.com/questions/246498/...
Vous devez vous connecter pour publier un commentaire.
L' .NET framework a déjà des classes et des méthodes disponibles pour convertir DateTimes entre les différents fuseaux horaires. Jetez un oeil à la ConvertTime méthodes de la TimeZoneInfo classe.
Edit: Lorsque vous obtenez le temps de mettre dans la base de données, en supposant qu'il a été créé à corriger les informations de fuseau horaire, vous pouvez facilement convertir au format UTC:
Obtenir timeInfo comme fait dans la question edit:
Lorsque vous envoyez la base de données de temps pour l'utilisateur, le convertir dans le bon fuseau horaire à l'aide de
timeInfo
.Personnellement, je vais l'essayer et de garder cette logique distincte de la propery méthodes get/set.
Pour aider les autres: