2008-11-08 17 views
23

जब मैं DateTime.Now का उपयोग करता हूं तो मुझे सर्वर बिंदु दृश्य से दिनांक और समय मिलता है। क्लाइंट एएसपी.NET में दिनांक और समय प्राप्त करने का कोई तरीका है?ASP.NET में ग्राहक दिनांक और समय कैसे प्राप्त करें?

+0

जावास्क्रिप्ट खराब हो सकता है, क्योंकि बहुत से उपयोगकर्ताओं के पास अपना समय गलत तरीके से सेट किया गया है। इसके अलावा, किसी के द्वारा इसका दुरुपयोग किया जा सकता है। आपको यह सत्यापित करना होगा कि यूटीसी का ऑफ़सेट उचित है या नहीं। – hangy

उत्तर

11

मैं जो करना चाहता हूं वह एक छिपी हुई इनपुट फ़ील्ड बनाता है और फिर फॉर्म के लिए ऑनसबमिट ईवेंट में जावास्क्रिप्ट दिनचर्या तारित करता है। यह दिनचर्या क्लाइंट मशीन पर समय के साथ छिपे हुए क्षेत्र को पॉप्युलेट करेगा।

छिपे हुए क्षेत्र HTML नियंत्रण "HtmlInputHidden" वर्ग का उपयोग करके ASP.NET के साथ उपयोग किया जा सकता है। आप बस किसी अन्य सर्वर साइड कंट्रोल की तरह एक रनैट = "सर्वर" विशेषता इनपुट इनपुट देते हैं।

सर्वर तब पोस्ट आउट कर सकता है जब फॉर्म पोस्ट करता है। यदि आप इसे कई स्थानों पर करने की ज़रूरत है तो आप इसे सर्वर नियंत्रण में भी लपेट सकते हैं।

वैकल्पिक रूप से, आप इसे AJAX के साथ कर सकते हैं लेकिन कार्यान्वयन इस लाइब्रेरी पर निर्भर करेगा कि आप किस लाइब्रेरी का उपयोग करते हैं।

+2

ऐसा करने के बजाय, ब्राउज़र टाइमज़ोन संग्रहीत करने के लिए, कुकी सेट करने के लिए बस जावास्क्रिप्ट का उपयोग करें। फिर बैकएंड जब भी कुकी को पढ़ सकता है। –

+0

कुकी के साथ समस्या यह है कि लोग यात्रा करते हैं। –

4

यदि आप उपयोगकर्ता प्रोफ़ाइल बनाए रखते हैं, तो आप उन्हें अपने टाइमज़ोन बताने के लिए कह सकते हैं, और फिर आवश्यक गणना कर सकते हैं।

0

विकल्प उपयोगकर्ता को अपने आईपी पते के आधार पर भौगोलिक स्थानांतरित करना है। या ब्राउजर यदि ब्राउजर में यह क्षमता है (फ़ायरफ़ॉक्स के लिए जल्द ही आ रहा है)। एक बार आपके पास उपयोगकर्ता का स्थान हो जाने पर आप टाइमज़ोन देख सकते हैं।

जावास्क्रिप्ट समाधान शायद एक अच्छा और आसान है।

+2

आईपी जरूरी सही जवाब नहीं देगा। मेरे पास एक ग्राहक है जो सभी नेटवर्क कनेक्टिविटी (एक साइट से दूसरे साइट पर सीधी पाइप) के लिए एक साइट का उपयोग करता है, इसलिए वे सभी एक सीएसटी आईपी से आ रहे हैं चाहे वे वास्तव में कहां हैं। –

+0

स्टीफन: हम क्लाइंट आईपी को छिपाने के लिए व्यवसाय करते हैं, इसलिए वीपीएन-इन प्राग में है और प्रॉक्सी-आउट बर्लिन में है। और उदाहरण के लिए, मॉस्को में ग्राहक हैं। – abatishchev

0

क्लाइंट और सर्वर पूरी तरह सिंक्रनाइज़ नहीं हो सकता है, इसलिए सवाल यह है कि यदि आप क्लाइंट कंप्यूटर पर समय चाहते हैं, या आप सर्वर पर समय चाहते हैं, लेकिन समय-क्षेत्र अंतर के लिए समायोजित किया गया है। जावास्क्रिप्ट आपको क्लाइंट (टाइमज़ोन सहित) पर समय प्राप्त कर सकता है। आप क्लाइंट के टाइमज़ोन के साथ सर्वर पर समय को भी जोड़ सकते हैं।

हालांकि आप अनुरोध के विलंबता की तुलना में उच्च परिशुद्धता के साथ समय कभी नहीं प्राप्त कर सकते हैं।

16

मुझे ब्राउजर/सिस्टम समय और समय क्षेत्र का उपयोग करने या उन्हें अपने समय क्षेत्र का चयन करने का विचार पसंद है। सर्वर पर

<script language="javascript"> 
function checkClientTimeZone() 
{ 
    // Set the client time zone 
    var dt = new Date(); 
    SetCookieCrumb("ClientDateTime", dt.toString()); 

    var tz = -dt.getTimezoneOffset(); 
    SetCookieCrumb("ClientTimeZone", tz.toString()); 

    // Expire in one year 
    dt.setYear(dt.getYear() + 1); 
    SetCookieCrumb("expires", dt.toUTCString()); 
} 

// Attach to the document onload event 
checkClientTimeZone(); 
</script> 

और फिर: एक अतीत परियोजना में मैं कुछ इस तरह इस्तेमाल किया

/// <summary> 
/// Returns the client (if available in cookie) or server timezone. 
/// </summary> 
public static int GetTimeZoneOffset(HttpRequest Request) 
{ 
    // Default to the server time zone 
    TimeZone tz = TimeZone.CurrentTimeZone; 
    TimeSpan ts = tz.GetUtcOffset(DateTime.Now); 
    int result = (int) ts.TotalMinutes; 
    // Then check for client time zone (minutes) in a cookie 
    HttpCookie cookie = Request.Cookies["ClientTimeZone"]; 
    if (cookie != null) 
    { 
     int clientTimeZone; 
     if (Int32.TryParse(cookie.Value, out clientTimeZone)) 
      result = clientTimeZone; 
    } 
    return result; 
} 

या आप यह URL पैरामीटर में गुजरती हैं और Page_Load में इसे संभाल कर सकते हैं:

http://host/page.aspx?tz=-360 

बस मिनटों का उपयोग करना याद रखें, क्योंकि सभी समय क्षेत्र पूरे घंटे नहीं होते हैं।

+0

यह लाइन स्पष्ट नहीं है Int32.TryParse (कुकी.वैल्यू, आउट परिणाम); आप परिणाम चर में कुकी मान संग्रहीत करते हैं लेकिन इससे पहले कि आप कुल चर को परिणाम चर में संग्रहीत करते हैं। अपने सर्वर साइड रूटीन GetTimeZoneOffset() फ़ंक्शन को बहुत स्पष्ट नहीं करें। यदि संभव हो तो plzz समझाओ। – Thomas

+0

@ थॉमस मैंने सर्वर समय क्षेत्र के साथ शुरू किया और फिर यह देखने के लिए जांचें कि क्लाइंट टाइम ज़ोन कुकी मौजूद है या नहीं। यदि कुकी मौजूद है, तो स्ट्रिंग को पूर्णांक मिनट में कनवर्ट करने का प्रयास करें। – Ryan

-5

मैं वीबी

Dim strLanguage As String = Request.UserLanguages(0) 
Dim currentCulture As CultureInfo = CultureInfo.CreateSpecificCulture(strLanguage) 
Dim dateformat As String = currentCulture.DateTimeFormat.ShortDatePattern 

इस के साथ ASP.Net में इस विधि का उपयोग आंकड़ों को देखने कंप्यूटर के डेटा समय प्रारूप निकलेगा।

+6

स्टैक ओवरव्लो में आपका स्वागत है! कृपया प्रश्न दोबारा पढ़ें। उपयोगकर्ता क्लाइंट के स्थानीय समय को जानना चाहता है, समय प्रारूप नहीं। –

संबंधित मुद्दे