2009-05-21 3 views

Antwort

2

Sie müssten serverseitig die Zeitzone des Clients kennen. Es gibt nicht genug Informationen in der typischen Anfrage, um diese Entscheidung zu treffen, die nächste, die Sie bekommen können, ist die Accept_Language-Kopfzeile, die Ihnen einen Anhaltspunkt gibt, aber kaum nützlich genug ist (besonders wenn der Kunde in einem Land ist, das mehrere Zeitzonen hat) .

Daher müssten Sie Benutzer, um Ihnen zu sagen, was ihre Zeitzone ist und dann eine Anmeldung oder ein Cookie verwenden, um diese Informationen zu speichern.

+0

Dank.. Ja, es muss Zeitzone für das Benutzerprofil gespeichert werden. – BlueSky

0

Sie können die Konvertierung auf der Serverseite in vb.net, C# oder was auch immer .net Sprache Ihre Verwendung tun. Sie müssen irgendwo in die lokale Zeit umrechnen.

Ihre Frage eine sehr breite Frage ohne Details, so kann ich nicht empfehlen, wie dies auf dem Server zu tun.

bearbeiten

Basierend auf den Kommentaren ich das Problem Ihr sehen ist, dass Sie die Benutzer Zeitzone, um herauszufinden, was wollen ohne Javascript ist. Ich lasse den Benutzer mir immer ihre Zeitzone mitteilen, wenn sie sich registrieren.

Ein Ansatz, der nicht perfekt wäre, würde wäre, einen Geo-IP-Lookup-Service verwenden, der Ihnen wahrscheinlich sagen wird, wo Ihr Benutzer und geben Sie Ihre bessere Granularität dann mit den Spracheinstellungen.

+2

Dies setzt voraus, der Server weiß, welche Zeitzone der Client in ist – AnthonyWJones

+0

Welche schwer sein wird, ohne JS zu sammeln :) – annakata

0

Ich glaube, das ist die nächste Sie tun können:

using System.Globalization; 

// get the first language from request (en, fr, ru) 
var primaryLanguage = Request.UserLanguages.First().Split(";").First(); 
// find a culture by this language 
var culture = new CultureInfo(primaryLanguage); 
// if the culture is neutral, try to find the specific one 
if (culture.IsNeutralCulture) 
    culture = CultureInfo.GetCultures(CultureTypes.SpecificCultures).FirstOrDefault(o => o.TwoLetterISOLanguageName == primaryLanguage); 
// get the string from a datetime 
var datetimeText = culture ? DateTime.Now.ToString(culture) : DateTime.Now.ToString(); 
Verwandte Themen