كيفية تقديم الوقت المحلي مع إعطاء قيم DateTime UTC في ASP.NET دون استخدام JavaScript؟

StackOverflow https://stackoverflow.com/questions/893689

  •  23-08-2019
  •  | 
  •  

سؤال

هل من الممكن عرض الأوقات المحلية للمستخدمين دون استخدام JavaScript عند تخزين القيم مثل UTC؟

هل كانت مفيدة؟

المحلول

ستحتاج إلى خدمة ServerSide لتكون على دراية بالعملاء TimeZone. لا توجد معلومات كافية في الطلب النموذجي لجعل هذا التصميم، وهو الأقرب الذي يمكنك الحصول عليه هو رأس قبول_language الذي قد يمنحك فكرة ولكن بالكاد مفيد بما فيه الكفاية (ESP. إذا كان العميل في بلد يحتوي على عدة حالات زمنية متعددة) وبعد

وبالتالي، ستحتاج إلى المستخدم لإخبارك بما هو TimeZone ثم استخدم تسجيل الدخول أو ملف تعريف الارتباط لتخزين هذه المعلومات.

نصائح أخرى

يمكنك القيام بالتحويل على خادم Server في VB.NET أو C # أو أي لغة .NET الخاصة بك باستخدام. سوف تضطر إلى تحويلها إلى التوقيت المحلي في مكان ما.

طرح سؤال واسع للغاية مع عدم وجود تفاصيل حتى لا أستطيع أن أوصي بكيفية القيام بذلك على الخادم.

يحرر

بناء على التعليقات التي أرى أن المشكلة الخاصة بك هي أنك تريد معرفة ما هو TimeZone المستخدمين بدون جافا سكريبت. لدي دائما المستخدم أخبرني حيالهم عند التسجيل.

سيتم استخدام نهج واحد الذي لن يكون مثاليا لخدمة بحث GEO-IP من شأنها أن تخبرك على الأرجح حيث يكون المستخدم الخاص بك وإعطاء حبيبتك بشكل أفضل ثم باستخدام إعدادات اللغة.

أعتقد أن هذا هو الأقرب الذي يمكنك القيام به:

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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top