2015-10-26 11 views
8

के बीच डेटाटाइम डेटाटाइप को संभालना मैं जानना चाहता हूं कि WebApi 2, जावास्क्रिप्ट और डेटाबेस में डेटाटाइम डेटा प्रकार को संभालने का सही तरीका निम्न है या नहीं।जावास्क्रिप्ट और वेबएपी 2

जावास्क्रिप्ट से WebAPI को दिनांक समय:

var date = new Date(); 
var datestring = date.toISOString(); 
//Send datestring to WebApi 

WebAPI से जावास्क्रिप्ट को दिनांक समय:

//on getting datetime value from `http.get` call 
var dateFromServer = new Date(dateFromServer); 

WebAPI:

आने वाली दा ते

  • बस datestring डेटाप्रकार datetime

डेटाबेस से तारीख हो रही है और ग्राहक के लिए तारीख रिटर्निंग के साथ डेटाबेस स्तंभ में लौटे की दुकान में कुछ नहीं कर:

  • कोई datetime हेरफेर (बस वेबएपी जेसन सीरियलाइजर के अनुसार वापस लौटें: 2015-10-23 T18: 30: 00)। क्लाइंट स्वचालित रूप से यूटीसी डेटाटाइम को स्थानीय डेटाटाइम

उत्तर

8

हाँ यदि आप उपयोगकर्ता टाइमज़ोन आदि के बारे में कोई जानकारी नहीं लेना चाहते हैं ... यह एक स्वीकार्य तरीका है। बस यह सुनिश्चित करें कि किसी भी समय आप किसी तुलना के लिए सर्वर से उत्पादित दिनांक चाहते हैं या सी # डेटटाइम का उपयोग करने के लिए कुछ और चाहते हैं। UtcNow विधि। मुझे लगता है कि "ग्लोबल यूटीसी कन्वेंशन" होने के कारण यह काफी सुरक्षित और अच्छा समाधान है लेकिन इसमें कुछ सीमाएं हैं।

उदाहरण के लिए यदि आप अपने सभी उपयोगकर्ताओं को 0:00 बजे (प्रत्येक उपयोगकर्ता के देश पर) अलग-अलग समय क्षेत्रों में स्थित करना चाहते हैं तो यह जानना असंभव है कि प्रत्येक के लिए "09:00" कब होता है।

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

TimeZoneInfo.ConvertTimeFromUtc(time, this.userTimezone); 

वैकल्पिक रूप से यदि आप सर्वर आप कर सकते हैं पर सभी समय क्षेत्र जानकारी संग्रहीत करना चाहते हैं: "2014-02-01T09: 28

निम्न स्वरूप का उपयोग सर्वर के लिए जावास्क्रिप्ट से अपनी दिनांक भेजें: 56.321-10: 00 " आईएसओ 8601 जेड को + या - टाइमज़ोन ऑफ़सेट के लिए मान के साथ समय क्षेत्र का समर्थन करता है।

"डेटटाइम ऑफसेट" प्रकार के साथ अपने वेब एपीआई 2 दिनांक प्रकारों को घोषित करें।

अंत में "डेटाटाइमसेट" प्रकार का उपयोग कर डेटाबेस के भीतर अपनी तिथियां संग्रहीत करें।

इस तरह सर्वर या डेटाबेस पर किसी भी समय आपके पास उपयोगकर्ता के समय और समय क्षेत्र के बारे में सारी जानकारी है।

आपको this article उपयोगी

मिलेगा
संबंधित मुद्दे