2013-01-10 10 views

उत्तर

13

SQLite ISO8601 दिनांक/समय प्रारूप का उपयोग करते हुए यूटीसी (जीएमटी) में वर्तमान समय का प्रतिनिधित्व करने वाली एक स्ट्रिंग संग्रहीत करता है। यह प्रारूप (वाई वाई वाई वाई-एमडी-डीडी एचएच: एमएम: एसएस), तिथि/समय तुलना के लिए उपयुक्त तरीके से है।

दिनांक पुनर्प्राप्त करने के लिए नीचे दिए गए कोड का उपयोग करें।

Cursor row = databaseHelper.query(true, TABLE_NAME, new String[] { 
COLUMN_INDEX}, ID_COLUMN_INDEX + "=" + rowId, 
null, null, null, null, null); 
String dateTime = row.getString(row.getColumnIndexOrThrow(COLUMN_INDEX)); 

यह एक स्ट्रिंग देता है, उसे पार्स और अपने स्थानीय प्रारूप और समय क्षेत्र में पुन: फ़ॉर्मेट:

DateFormat iso8601Format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
try { 
date = iso8601Format.parse(dateTime); 
} catch (ParseException e) { 
Log.e(TAG, "Parsing ISO8601 datetime failed", e); 
} 

long when = date.getTime(); 
int flags = 0; 
flags |= android.text.format.DateUtils.FORMAT_SHOW_TIME; 
flags |= android.text.format.DateUtils.FORMAT_SHOW_DATE; 
flags |= android.text.format.DateUtils.FORMAT_ABBREV_MONTH; 
flags |= android.text.format.DateUtils.FORMAT_SHOW_YEAR; 

String finalDateTime = android.text.format.DateUtils.formatDateTime(context, 
when + TimeZone.getDefault().getOffset(when), flags); 

आशा यह आप में मदद मिलेगी।

+0

हाय नागराज 436 मैं कॉलम दिनांक के लिए डेटा प्रकार DATE का उपयोग कर रहा हूं। तो मैं कर्सर का उपयोग नहीं कर सकता .getString –

+0

@ दीपककतरिया क्या आपने getString() का उपयोग करने का प्रयास किया है? क्या आपको इसका उपयोग करने में कोई त्रुटि मिली? – TNR

+0

दिनांक के लिए डेटाटाइप का उपयोग स्ट्रिंग के रूप में करें जो आपकी मदद करेगा। मैं वही कर रहा हूं। जैसा कि @ नागराज 436 ने कहा है, जिस तारीख में उन्होंने उल्लेख किया है और अन्य रूपों को भी पार्स करने में मदद करता है .. कर्सर का उपयोग करें .getString()। toString() – sankettt

4

इस कोड काम करता है

String s= cursor.getString(position); 
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
    Date d=new Date(); 
    try { 
     d= dateFormat.parse(s); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    YourObject.setDate(d); 
+0

सही कोड होगा लेकिन उनकी आवश्यकता के अनुसार देखने के लिए सेट करने के लिए संशोधित करने की आवश्यकता है। EX: ** textView ** जोड़ने की तिथि। ** textview.setText (dateformate.formate (डी)) ** –

13

SQLite वास्तव में एक DATE प्रकार नहीं है (DATE कीवर्ड अर्थ केवल यह स्तंभ Datatypes In SQLite Version 3 प्रति, एक NUMERIC संबंध है), तो यह के लिए कैसे एक सम्मेलन का चयन करने के आप पर निर्भर है आप तिथियां स्टोर करेंगे। आम सम्मेलन (ए) जूलियन तिथियों को संग्रहीत करने के लिए वास्तविक संख्याओं का उपयोग करने के लिए या (बी) यूनिक्स युग (1 9 70 के बाद से सेकंड) को स्टोर करने के लिए पूर्णांक संख्याओं का उपयोग करने के लिए, जो Date And Time Functions प्रति 'यूनिक्सपोक' तर्क के साथ SQLite दिनांक और समय कार्य समर्थन का समर्थन करता है)।

आप यूनिक्स काल के रूप में भंडारण दिनांकों कर रहे हैं (एक Date वस्तु पर .getTime() बुला के बाद से Android के लिए सुविधाजनक 1970 के बाद से मिलीसेकेंड की संख्या देता है), तो एक long के रूप में SQLite DATE क्षेत्र पढ़ सकते हैं और इस बात का मिलीसेकंड बराबर पारित java.util.Date कन्स्ट्रक्टर Date(long milliseconds) में। तो, यह कुछ ऐसा दिखाई देगा:

SQLiteManager dbManager = new SQLiteManager(context, DB_NAME, null, VERSION); 
SQLiteDatabase db = dbManager.getReadableDatabase(); 
Cursor cursor = db.query(TABLE_NAME, 
    new String[] { COLUMN_NAME_ID, COLUMN_NAME_DATE }, 
    null, null, // selection, selectionArgs 
    null, null, null, null); // groupBy, having, orderBy, limit 
try { 
    while(cursor.moveNext()) { 
     int id = cursor.getInt(0); 
     // Read the SQLite DATE as a long and construct a Java Date with it. 
     Date date = new Date(cursor.getLong(1)*1000); 
     // ... 
    } 
} finally { 
    cursor.close(); 
    db.close(); 
} 
+1

यह SQLite और एंड्रॉइड में तिथियों का उपयोग करने का मेरा पसंदीदा तरीका है। – Flash

+0

अच्छा लेकिन मैं थोड़ा उलझन में हूं .. इस मामले में SQLite पर फ़ील्ड का प्रकार DATETIME या INT या DATE होना चाहिए? –

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