2012-07-25 15 views
5

के साथ डीबी टाइम वैल्यू को सही तरीके से कैसे संभालें, क्या किसी को पता है कि एक json timespan ऑब्जेक्ट को कैसे पार्स करना है? मैं अपने दृश्य में यूटीसी टाइम्स पैन वापस करना चाहता हूं, और उसके बाद इसे स्थानीय क्लाइंट समय में बदलना चाहता हूं, लेकिन मुझे ऐसा करने के लिए कोई संदर्भ नहीं मिला है।जेसन और जावास्क्रिप्ट/jquery

मैं MVC उपयोग कर रहा हूँ तो मैं इस मॉडल मिल गया है:

public class TimeSpanModel 
{ 
    public TimeSpan StartTime { get; set; } 

    public TimeSpanModel() 
    { 
     this.StartTime = DateTime.UtcNow.TimeOfDay; 

    } 
} 

और मेरे नियंत्रक में मैं इस तरह मेरे विचार करने के लिए इस मॉडल वापसी:

public ActionResult GetTimeSpanInfo() 
    { 
     TimeSpanModel tsm= new TimeSpanModel(); 
     return Json(tsm); 
    } 

मैं बना रहा हूं देखने से इस तरह कहते हैं:

$.ajax({ 
     type: 'POST', 
     url: '@Url.Content("~/Controller/GetTimeSpanInfo")', 
     success: function (data) { 
     alert(data.StartTime); 
     var dt = new Date(data.StartTime); 
     alert(dt.toString()); 
     } 
    }); 

लेकिन पहले अलर्ट बॉक्स में, मैं केवल यह देखें: [वस्तु वस्तु] इसलिए मैंने टाइमपैन को एक तिथि में बदलने की कोशिश की, लेकिन दूसरे अलर्ट बॉक्स में, मुझे अमान्य तिथि मिल गई।

क्या मुझे टाइमपैन को स्ट्रिंग में कनवर्ट करना होगा, और उसके बाद उस स्ट्रिंग को कुछ अजीब तारीख के साथ जोड़ना होगा जिसे मुझे 'वैध' दिनांक बनाने के लिए आवश्यक नहीं है और फिर इसे स्थानीय समय में परिवर्तित करें, और उसके बाद निकालें उस समय से?

या टाइमस्पेन्स के साथ काम करने का एक आसान, अधिक सुरुचिपूर्ण तरीका है, या केवल डेटाटाइम मूल्य का समय हिस्सा है?

किसी भी मदद के लिए धन्यवाद।

पीएस यह केवल स्थानीय समय में कनवर्ट करने के लिए UTCnow समय प्राप्त करने के लिए मूर्खतापूर्ण प्रतीत हो सकता है, लेकिन अंततः मुझे यह यूटीसी समय मान डीबी टेबल - प्रकार समय (0) से प्राप्त होगा। मैंने जिस विधि को ऊपर पोस्ट किया है, वह परीक्षण करने के लिए केवल एक छोटा रास्ता है, जब मैं इसे डीबी से प्राप्त करता हूं और फिर मॉडल में मान सेट करता हूं।

+0

आप JSON का एक उदाहरण है कि वापस आ जा रहा है पोस्ट कर सकते हैं? प्रतिनिधित्व करने के लिए समय अवधि क्या वास्तव में है? कई सेकंड?दो डेटाटाइम जिन्हें स्थानीय डेटाटाइम के रूप में प्रदर्शित किया जा सकता है, और उनके बीच का अंतर दिखाया गया है? – JMM

+0

आप लंबे प्रकार से लौट सकते हैं। – Myd

उत्तर

2

[object Object] जो आप देख रहे हैं वह है क्योंकि टाइमस्पेन के लिए JSON प्रतिनिधित्व नहीं है, इसलिए सबसे आसान समाधान यह है कि इसे पास करने के लिए एक सामान्य प्रारूप का उपयोग करना होगा, जो मिलीसेकंड है।

public ActionResult GetTimeSpanInfo() 
    { 
     TimeSpanModel tsm= new TimeSpanModel(); 
     return Json(tsm.TotalMilliseconds.ToString()); 
    } 

और, दिनांक निर्माता की तारीख (मिलीसेकेंड) का उपयोग जावास्क्रिप्ट में पार्स इस प्रकार इस प्रकार है:

$.ajax({ 
     type: 'POST', 
     url: '@Url.Content("~/Controller/GetTimeSpanInfo")', 
     success: function (data) { 
     alert(data); 
     var dt = new Date(data); 
     alert(dt.toString()); 
     } 
    }); 
2

एक मानव पठनीय संस्कृति स्वतंत्र ढंग से तार के रूप में:

जावास्क्रिप्ट से

var dateParam = aDate.toUTCString(); 

सी #

DateTime aDate = DateTime.ParseExact(dateParam, "r", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None); 

को और अब सी #

DateTime formattedDateFromCSharp = aDate.ToString("r"); 

से जावास्क्रिप्ट को

var aDate = Date.parse(formattedDateFromCSharp); 
+0

आपके उत्तरों के लिए धन्यवाद। भले ही मैं उस समय केवल रूचि रखता था, मैं पूर्ण डेटटाइम प्रकार का उपयोग कर समाप्त हुआ क्योंकि यह इतना आसान था। डेटटाइम प्राप्त करने के बाद मैंने उन घंटों/मिनटों के मूल्यों को निकाला जिन्हें मुझे इसकी आवश्यकता थी। – codenewbie

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