2010-02-03 19 views
11

का उपयोग करके मैं जावा सीख रहा हूं और एक एंड्रॉइड ऐप लिख रहा हूं जो सर्वर द्वारा पारित एक JSON ऑब्जेक्ट का उपभोग करता है।JSON `दिनांक" ... `` java.Util.Date` `org.json`

मेरे पास तारीखों को छोड़कर सभी काम कर रहे हैं।

मैं इन वापस

'SomeKey':'\/Date(1263798000000)\/' 

मैं org.json.JSONObject उपयोग कर रहा हूँ में से एक मिलता है।

मैं SomeKey को java.Util.Date में कैसे परिवर्तित करूं?

उत्तर

8

जेएसओएन में दिनांक प्रारूप मानक नहीं है, इसलिए आपको यह चुनने की जरूरत है कि आप इसे "कैसे पास करते हैं"। मुझे लगता है कि आप जो मूल्य देख रहे हैं वह मिलिस में है।

जावा में:

System.out.println (new Date(1263798000000L)); 
// prints: Mon Jan 18 09:00:00 IST 2010 

यह निश्चित रूप से, मेरे समय क्षेत्र में है, लेकिन किसी भी मामले में यह एक काफी हाल ही में तारीख है।

दिनांक निर्माता की जावाडोक से:

पैरामीटर:
तारीख - 1 जनवरी, 1970, 00:00:00 GMT के बाद मिलीसेकेंड। डॉक्स यहाँ के

लिंक ->http://java.sun.com/javase/6/docs/api/java/util/Date.html#Date%28long%29

+0

मैं भी Ava के लिए नया हूँ, कैसे मैं एक नियमित अभिव्यक्ति करते हैं मूल्य प्राप्त करने के? –

+0

आपको नियमित अभिव्यक्तियों का उपयोग करने की आवश्यकता नहीं है, आप एक सबस्ट्रिंग प्राप्त करने के लिए स्ट्रिंग विधियों का उपयोग कर सकते हैं। दस्तावेज़ों पर एक नज़र डालें। – Yoni

2

के रूप में योनि पहले ही उल्लेख किया, JSON को परिभाषित नहीं करता है क्या एक तारीख है, या कैसे एक क्रमानुसार करने। आपके द्वारा पोस्ट किए गए JSON स्निपेट को देखते हुए, ऐसा लगता है कि किसी ने बहुत ही रचनात्मक महसूस किया है, इस तरह की तारीख को क्रमबद्ध करना।

यहां ध्यान देने योग्य महत्वपूर्ण बात यह है कि: किसी भी JSON पार्सर के लिए, यह केवल एक स्ट्रिंग है। "तिथि (12345)" भाग व्यर्थ है। आपको खुद को java.util.Date में पार्स करना होगा, जो उस मामले में किसी भी संख्या को अलग करना बंद कर देता है और java.util.Date को तुरंत चालू करने के लिए संख्या (यूनिक्स समय) का उपयोग करना है।

बस रिकॉर्ड के लिए। एक ठेठ तरीका का उपयोग कर JSON या तो

{'timestamp':1265231402} 

या अधिक होने की संभावना

{'timestamp':'Wed, 03 Feb 2010 22:10:38 +0100'} 

बाद उदाहरण वर्तमान टाइमस्टैम्प (के रूप में मैं इस लिख रहा हूँ) हो का उपयोग करके करते मानक RFC-2822 होगा एक तारीख पारित करने के लिए स्वरूपण, जिसे जावा की डेट यूटिलिटीज का उपयोग करके आसानी से पार्स किया जा सकता है। जावा में तिथियों को पार्स करने के लिए SimpleDateFormat पर एक नज़र डालें।

+1

इस प्रकार .NET डेटटाइम ऑब्जेक्ट्स जेसनसेरियलर के साथ क्रमबद्ध हो जाते हैं। –

14

यह मदद कर सकता है:

public static Date JsonDateToDate(String jsonDate) 
{ 
    // "/Date(1321867151710)/" 
    int idx1 = jsonDate.indexOf("("); 
    int idx2 = jsonDate.indexOf(")"); 
    String s = jsonDate.substring(idx1+1, idx2); 
    long l = Long.valueOf(s); 
    return new Date(l); 
} 
0
public String FormartDate(String date) { 
     Calendar calendar = Calendar.getInstance(); 
     String datereip = date.replace("/Date(", "").replace(")/", ""); 
     Long timeInMillis = Long.valueOf(datereip); 
     calendar.setTimeInMillis(timeInMillis); 

     String DateFmtI; 
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy"); 
     DateFmtI = simpleDateFormat.format(calendar.getTime()); 
     return DateFmtI; 
    } 
संबंधित मुद्दे