Android SQLite में तारीखों के साथ काम करने का सबसे अच्छा तरीका [बंद]


237

मुझे अपने एंड्रॉइड एप्लिकेशन पर तारीखों के साथ काम करने में कुछ परेशानी हो रही है जो SQLite का उपयोग करता है। मेरे कुछ सवाल हैं:

  1. SQLite (पाठ, पूर्णांक, ...) में दिनांक स्टोर करने के लिए मुझे किस प्रकार का उपयोग करना चाहिए?
  2. तारीखों को स्टोर करने का सबसे अच्छा तरीका दिया गया है कि मैं ContentValues ​​का उपयोग करके इसे कैसे स्टोर करूं?
  3. SQLite डेटाबेस से दिनांक प्राप्त करने का सबसे अच्छा तरीका क्या है?
  4. SQLite पर एक sql का चयन कैसे करें, परिणाम को तिथि के अनुसार क्रमबद्ध करें?

2
बस कैलेंडर वर्ग और उसके सदस्य समय का उपयोग करें (जो कि 1/1/1970 के बाद से मिले मिलीसेकंड की संख्या का प्रतिनिधित्व करता है)। उपयोगकर्ता पठनीय स्ट्रिंग्स में समय मान को परिवर्तित करने के लिए सदस्य कार्य हैं।
स्लैटन

जवाबों:


43

आप तिथियों को स्टोर करने के लिए एक टेक्स्ट फ़ील्ड का उपयोग कर सकते हैं SQLite

UTC प्रारूप में दिनांक संग्रहीत करना, यदि आप उपयोग करते हैं तो डिफ़ॉल्ट तो datetime('now') (yyyy-MM-dd HH:mm:ss)दिनांक कॉलम द्वारा छँटाई की अनुमति देगा।

SQLiteआपके द्वारा तार के रूप में पुनः प्राप्त करने की तिथियां कैलेंडर या android.text.format.DateUtils.formatDateTimeविधि का उपयोग करके स्थानीय क्षेत्रीय स्वरूपों में आवश्यकतानुसार प्रारूपित / परिवर्तित कर सकती हैं ।

यहां मैं एक क्षेत्रीय स्वरूपित विधि का उपयोग करता हूं;

public static String formatDateTime(Context context, String timeToFormat) {

    String finalDateTime = "";          

    SimpleDateFormat iso8601Format = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss");

    Date date = null;
    if (timeToFormat != null) {
        try {
            date = iso8601Format.parse(timeToFormat);
        } catch (ParseException e) {
            date = null;
        }

        if (date != null) {
            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;

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

63
आप क्वेरी तिथि सीमाओं को कैसे संभालेंगे?
जो

51
"अनुशंसित अभ्यास"? सही नहीं लगता।
शिम

135
वर्षों में मैंने एसक्यूएल का उपयोग किया है, मैंने पहले कभी किसी को तार के रूप में तारीखों को जमा करने की सलाह नहीं दी। यदि आपके पास कोई विशिष्ट दिनांक स्तंभ प्रकार नहीं है, तो एक पूर्णांक और यूनिक्स समय में स्टोर (सेकंड के बाद से सेकंड) का उपयोग करें। इसकी छँटाई और प्रयोग करने योग्य रेंज में और आसानी से परिवर्तित।
माइकबाकॉक

20
स्ट्रिंग के रूप में दिनांक संग्रहीत करना ठीक है यदि आप इसे "सूचना" के रूप में संग्रहीत करना चाहते हैं, तो कुछ जिसे आप पुनर्प्राप्त करते हैं और दिखाते हैं। लेकिन अगर आप तारीखों को "डेटा" के रूप में संग्रहीत करना चाहते हैं, तो कुछ के साथ काम करने के लिए, आपको इसे पूर्णांक के रूप में संग्रहीत करना चाहिए - समय के बाद से। यह आपको तिथि सीमाओं को क्वेरी करने की अनुमति देगा, यह मानक है इसलिए आपको रूपांतरणों आदि के बारे में चिंता करने की आवश्यकता नहीं है आदि स्ट्रिंग के रूप में तिथियां संग्रहीत करना बहुत सीमित है और मैं वास्तव में जानना चाहूंगा कि इस अभ्यास को सामान्य नियम के रूप में किसने अनुशंसित किया था।
क्रिस्टियन

8
SQLite प्रलेखन सूचियों पाठ के रूप में संग्रहीत करने (ISO 8601) दिनांकों के भंडारण के लिए एक व्यवहार्य समाधान के रूप में। दरअसल, यह पहले सूचीबद्ध है।
anderspitman

211

कैलेंडर कमांड का उपयोग करके प्राप्त तारीखों को एक संख्या के रूप में संग्रहीत करने का सबसे अच्छा तरीका है।

//Building the table includes:
StringBuilder query=new StringBuilder();
query.append("CREATE TABLE "+TABLE_NAME+ " (");
query.append(COLUMN_ID+"int primary key autoincrement,");
query.append(COLUMN_DATETIME+" int)");

//And inserting the data includes this:
values.put(COLUMN_DATETIME, System.currentTimeMillis()); 

यह क्यों? सबसे पहले, एक तिथि सीमा से मान प्राप्त करना आसान है। बस अपनी तिथि को मिलीसेकंड में रूपांतरित करें, और फिर उचित रूप से क्वेरी करें। तिथि के अनुसार क्रमबद्ध करना समान रूप से आसान है। विभिन्न स्वरूपों में बदलने के लिए कॉल भी आसान है, जैसा कि मैंने शामिल किया। लब्बोलुआब यह है, इस विधि के साथ, आपको कुछ भी करने की ज़रूरत है, कोई समस्या नहीं है। कच्चे मूल्य को पढ़ना थोड़ा मुश्किल होगा, लेकिन यह आसानी से पढ़ने योग्य और प्रयोग करने योग्य मशीन होने के साथ उस मामूली नुकसान को पूरा करता है। और वास्तव में, एक पाठक का निर्माण करना अपेक्षाकृत आसान है (और मुझे पता है कि वहाँ कुछ बाहर हैं) जो स्वचालित रूप से समय टैग को पढ़ने के लिए आसान के रूप में बदल देगा।

यह ध्यान देने योग्य है कि इससे निकलने वाले मूल्य लंबे होने चाहिए, इंट नहीं। साइक्लाइट में इंटेगर का मतलब कई चीजें हो सकता है, 1-8 बाइट्स से कुछ भी, लेकिन लगभग सभी तारीखों के लिए 64 बिट्स या एक लंबा, जो काम करता है।

संपादित करें: जैसा कि टिप्पणियों में बताया गया है, cursor.getLong()यदि आप ऐसा करते हैं, तो आपको टाइमस्टैम्प को ठीक से प्राप्त करने के लिए उपयोग करना होगा।


17
धन्यवाद भाई। योग्य मैंने एक गलत टाइपिंग के बारे में सोचा था लेकिन मैं इसे नहीं खोज पाया। इसे कर्सर.गेटलॉन्ग () द्वारा प्राप्त किया जाना चाहिए, कर्सर.गेटआईएनट () द्वारा नहीं। लोल खुद पर हंसी नहीं रोक सकते। एक बार फिर धन्यवाद।
बेटा हुआ टीआरएन

37
  1. के रूप में माना इस टिप्पणी में , मैं हमेशा दिनांकों स्टोर करने के लिए पूर्णांकों का उपयोग करेंगे।
  2. भंडारण के लिए, आप एक उपयोगिता विधि का उपयोग कर सकते हैं

    public static Long persistDate(Date date) {
        if (date != null) {
            return date.getTime();
        }
        return null;
    }
    

    इस तरह:

    ContentValues values = new ContentValues();
    values.put(COLUMN_NAME, persistDate(entity.getDate()));
    long id = db.insertOrThrow(TABLE_NAME, null, values);
    
  3. एक और उपयोगिता विधि लोडिंग का ख्याल रखती है

    public static Date loadDate(Cursor cursor, int index) {
        if (cursor.isNull(index)) {
            return null;
        }
        return new Date(cursor.getLong(index));
    }
    

    इस तरह इस्तेमाल किया जा सकता है:

    entity.setDate(loadDate(cursor, INDEX));
  4. तिथि के अनुसार ऑर्डर करना सरल SQL आदेश खंड है (क्योंकि हमारे पास एक संख्यात्मक स्तंभ है)। निम्नलिखित अवरोही क्रम का आदेश देगा (यह नवीनतम तारीख पहले आता है):

    public static final String QUERY = "SELECT table._id, table.dateCol FROM table ORDER BY table.dateCol DESC";
    
    //...
    
        Cursor cursor = rawQuery(QUERY, null);
        cursor.moveToFirst();
    
        while (!cursor.isAfterLast()) {
            // Process results
        }
    

हमेशा यूटीसी / जीएमटी समय को स्टोर करना सुनिश्चित करें , खासकर जब काम कर रहे हों java.util.Calendarऔर java.text.SimpleDateFormatजो डिफ़ॉल्ट (यानी आपके डिवाइस के) समय क्षेत्र का उपयोग करें। java.util.Date.Date()उपयोग करने के लिए सुरक्षित है क्योंकि यह एक यूटीसी मूल्य बनाता है।


9

SQLite दिनांक को संग्रहीत करने के लिए पाठ, वास्तविक या पूर्णांक डेटा प्रकारों का उपयोग कर सकता है। इससे भी अधिक, जब भी आप कोई क्वेरी करते हैं, तो परिणाम प्रारूप का उपयोग करके दिखाए जाते हैं %Y-%m-%d %H:%M:%S

अब, यदि आप SQLite दिनांक / समय फ़ंक्शन का उपयोग करते हुए दिनांक / समय मान सम्मिलित करते हैं, तो आप वास्तव में मिलीसेकंड को भी स्टोर कर सकते हैं। यदि ऐसा है, तो परिणाम प्रारूप का उपयोग करके दिखाए जाते हैं %Y-%m-%d %H:%M:%f। उदाहरण के लिए:

sqlite> create table test_table(col1 text, col2 real, col3 integer);
sqlite> insert into test_table values (
            strftime('%Y-%m-%d %H:%M:%f', '2014-03-01 13:01:01.123'),
            strftime('%Y-%m-%d %H:%M:%f', '2014-03-01 13:01:01.123'),
            strftime('%Y-%m-%d %H:%M:%f', '2014-03-01 13:01:01.123')
        );
sqlite> insert into test_table values (
            strftime('%Y-%m-%d %H:%M:%f', '2014-03-01 13:01:01.126'),
            strftime('%Y-%m-%d %H:%M:%f', '2014-03-01 13:01:01.126'),
            strftime('%Y-%m-%d %H:%M:%f', '2014-03-01 13:01:01.126')
        );
sqlite> select * from test_table;
2014-03-01 13:01:01.123|2014-03-01 13:01:01.123|2014-03-01 13:01:01.123
2014-03-01 13:01:01.126|2014-03-01 13:01:01.126|2014-03-01 13:01:01.126

अब, सत्यापित करने के लिए कुछ प्रश्न करना कि क्या हम वास्तव में समय की तुलना करने में सक्षम हैं:

sqlite> select * from test_table /* using col1 */
           where col1 between 
               strftime('%Y-%m-%d %H:%M:%f', '2014-03-01 13:01:01.121') and
               strftime('%Y-%m-%d %H:%M:%f', '2014-03-01 13:01:01.125');
2014-03-01 13:01:01.123|2014-03-01 13:01:01.123|2014-03-01 13:01:01.123

आप एक ही जांच कर सकते हैं SELECTका उपयोग कर col2और col3और आप एक ही परिणाम मिलेंगे। जैसा कि आप देख सकते हैं, दूसरी पंक्ति (126 मिलीसेकंड) वापस नहीं है।

ध्यान दें कि BETWEENसमावेशी है, इसलिए ...

sqlite> select * from test_table 
            where col1 between 
                 /* Note that we are using 123 milliseconds down _here_ */
                strftime('%Y-%m-%d %H:%M:%f', '2014-03-01 13:01:01.123') and
                strftime('%Y-%m-%d %H:%M:%f', '2014-03-01 13:01:01.125');

... उसी सेट पर लौटेंगे।

विभिन्न तिथि / समय सीमाओं के साथ खेलने की कोशिश करें और सब कुछ उम्मीद के मुताबिक व्यवहार करेगा।

बिना strftimeफंक्शन के क्या ?

sqlite> select * from test_table /* using col1 */
           where col1 between 
               '2014-03-01 13:01:01.121' and
               '2014-03-01 13:01:01.125';
2014-03-01 13:01:01.123|2014-03-01 13:01:01.123|2014-03-01 13:01:01.123

बिना strftimeफंक्शन और बिना मिलीसेकंड के क्या?

sqlite> select * from test_table /* using col1 */
           where col1 between 
               '2014-03-01 13:01:01' and
               '2014-03-01 13:01:02';
2014-03-01 13:01:01.123|2014-03-01 13:01:01.123|2014-03-01 13:01:01.123
2014-03-01 13:01:01.126|2014-03-01 13:01:01.126|2014-03-01 13:01:01.126

किस बारे में ORDER BY?

sqlite> select * from test_table order by 1 desc;
2014-03-01 13:01:01.126|2014-03-01 13:01:01.126|2014-03-01 13:01:01.126
2014-03-01 13:01:01.123|2014-03-01 13:01:01.123|2014-03-01 13:01:01.123
sqlite> select * from test_table order by 1 asc;
2014-03-01 13:01:01.123|2014-03-01 13:01:01.123|2014-03-01 13:01:01.123
2014-03-01 13:01:01.126|2014-03-01 13:01:01.126|2014-03-01 13:01:01.126

ठीक काम करता है।

अंत में, जब एक कार्यक्रम के भीतर वास्तविक संचालन के साथ काम कर रहा है (बिना साइक्लाइट निष्पादन योग्य ...)

BTW: मैं JDBC (अन्य भाषाओं के बारे में निश्चित नहीं) का उपयोग कर रहा हूँ ... xerial से sqlite-jdbc ड्राइवर v3.7.2 - शायद नए संशोधन नीचे बताए गए व्यवहार को बदल दें ... यदि आप Android में विकसित कर रहे हैं, तो आप नहीं करते। एक jdbc- ड्राइवर की आवश्यकता है। सभी SQL संचालन का उपयोग कर प्रस्तुत किया जा सकता है SQLiteOpenHelper

JDBC विभिन्न तरीकों में किसी डेटाबेस की वास्तविक तिथि / समय मान प्राप्त करने के लिए है: java.sql.Date, java.sql.Time, और java.sql.Timestamp

संबंधित तरीकों में java.sql.ResultSet(जाहिर है) कर रहे हैं getDate(..), getTime(..)और getTimestamp()क्रमशः।

उदाहरण के लिए:

Statement stmt = ... // Get statement from connection
ResultSet rs = stmt.executeQuery("SELECT * FROM TEST_TABLE");
while (rs.next()) {
    System.out.println("COL1 : "+rs.getDate("COL1"));
    System.out.println("COL1 : "+rs.getTime("COL1"));
    System.out.println("COL1 : "+rs.getTimestamp("COL1"));
    System.out.println("COL2 : "+rs.getDate("COL2"));
    System.out.println("COL2 : "+rs.getTime("COL2"));
    System.out.println("COL2 : "+rs.getTimestamp("COL2"));
    System.out.println("COL3 : "+rs.getDate("COL3"));
    System.out.println("COL3 : "+rs.getTime("COL3"));
    System.out.println("COL3 : "+rs.getTimestamp("COL3"));
}
// close rs and stmt.

चूंकि SQLite में वास्तविक DATE / TIME / TIMESTAMP डेटा नहीं है, इसलिए ये सभी 3 विधियां मान लौटाती हैं जैसे कि ऑब्जेक्ट को 0 से प्रारंभ किया गया था:

new java.sql.Date(0)
new java.sql.Time(0)
new java.sql.Timestamp(0)

तो, सवाल यह है: हम वास्तव में दिनांक / समय / टाइमस्टैम्प ऑब्जेक्ट का चयन, सम्मिलित या अद्यतन कैसे कर सकते हैं? कोई आसान जवाब नहीं है। आप विभिन्न संयोजनों को आज़मा सकते हैं, लेकिन वे आपको सभी SQL कथनों में SQLite फ़ंक्शन एम्बेड करने के लिए बाध्य करेंगे। पाठ को अपने जावा प्रोग्राम के अंदर दिनांक ऑब्जेक्ट में बदलने के लिए उपयोगिता वर्ग को परिभाषित करना बहुत आसान है। लेकिन हमेशा याद रखें कि SQLite UTC + 0000 के लिए किसी भी दिनांक मान को बदल देता है।

संक्षेप में, हमेशा सही डेटा प्रकार का उपयोग करने के सामान्य नियम के बावजूद, या, यहां तक ​​कि यूनिक्स समय (मिली के बाद से मिलीसेकंड) को पूर्ण करने वाले पूर्णांक, मुझे डिफ़ॉल्ट SQLite प्रारूप ( '%Y-%m-%d %H:%M:%f'या जावा में 'yyyy-MM-dd HH:mm:ss.SSS') का उपयोग करने में बहुत आसान लगता है, बजाय सभी SQL बयानों के साथ SQLite फ़ंक्शन। पूर्व दृष्टिकोण को बनाए रखना बहुत आसान है।

TODO: एंड्रॉइड (API15 या बेहतर) के अंदर getDate / getTime / getTimestamp का उपयोग करते समय मैं परिणामों की जांच करूंगा ... शायद आंतरिक चालक sqlite-jdbc से अलग है ...


1
SQLite के आंतरिक भंडारण इंजन को देखते हुए, मुझे विश्वास नहीं हो रहा है कि आपके उदाहरणों का आप पर प्रभाव पड़ता है: ऐसा लगता है कि इंजन "घोषित SQL प्रकार के बावजूद किसी भी कॉलम में किसी भी स्टोरेज-टाइप किए गए मानों को संग्रहीत करने की अनुमति देता है" ( books.google)। डे /… )। यह मुझे लगता है कि आपके वास्तविक बनाम पूर्णांक बनाम पाठ उदाहरण में, यह क्या हो रहा है: SQLite केवल पाठ को ट्री कॉलम के सभी में पाठ के रूप में संग्रहीत करता है। तो, स्वाभाविक रूप से परिणाम सभी अच्छे हैं, भंडारण अभी भी बर्बाद हो गए हैं। यदि सिर्फ एक इंटेगर का उपयोग किया गया था, तो आपको मिलीसेकंड को ढीला करना चाहिए। बस कह रहा हूँ ...
मार्को

वास्तव में, आप पुष्टि कर सकते हैं कि मैंने सिलेक्ट डेटाइम (कॉल 3, 'यूनिक्सपोक') टेस्टोस्टेबल से क्या कहा। यह आपके उदाहरणों के लिए खाली पंक्तियों को दिखाएगा ... जब तक कि परीक्षण के लिए, आप एक वास्तविक पूर्णांक सम्मिलित करते हैं। उदाहरण के लिए, यदि आप कोल 3 मान 37 के साथ एक पंक्ति जोड़ रहे थे, तो ऊपर का चयन कथन प्रदर्शित करेगा: 1970-01-01 00:00:37। इसलिए, जब तक आप वास्तव में टेक्स्ट स्ट्रिंग के रूप में अपनी सभी तिथियों को अक्षम करने के साथ ठीक नहीं होते, तब तक आप जैसा सुझाव देते हैं, वैसा न करें।
मार्को

मुझे यह उत्तर पोस्ट किए हुए एक लंबा समय हो गया है ... शायद SQLite अपडेट किया गया है। केवल एक चीज जो मैं सोच सकता हूं, वह है एसक्यूएल बयानों को फिर से बनाम आपके सुझावों पर अमल करना।
मिग्वेल

3

आमतौर पर (जैसा कि मैं mysql / postgres में करता हूं) मैं टाइमस्टैम्प प्रारूप में उन्हें संग्रहीत करने के लिए int (mysql / post) या पाठ (sqlite) में तिथियां संग्रहीत करता है।

फिर मैं उन्हें डेट ऑब्जेक्ट में परिवर्तित करूंगा और यूजर टाइमजोन पर आधारित क्रियाएं करूंगा


3

Sqlite DBdate में स्टोर करने का सबसे अच्छा तरीका वर्तमान को स्टोर करना है । नीचे ऐसा करने के लिए कोड स्निपेट है_DateTimeMilliseconds

  1. लाओ DateTimeMilliseconds
public static long getTimeMillis(String dateString, String dateFormat) throws ParseException {
    /*Use date format as according to your need! Ex. - yyyy/MM/dd HH:mm:ss */
    String myDate = dateString;//"2017/12/20 18:10:45";
    SimpleDateFormat sdf = new SimpleDateFormat(dateFormat/*"yyyy/MM/dd HH:mm:ss"*/);
    Date date = sdf.parse(myDate);
    long millis = date.getTime();

    return millis;
}
  1. अपने DB में डेटा डालें
public void insert(Context mContext, long dateTimeMillis, String msg) {
    //Your DB Helper
    MyDatabaseHelper dbHelper = new MyDatabaseHelper(mContext);
    database = dbHelper.getWritableDatabase();

    ContentValues contentValue = new ContentValues();
    contentValue.put(MyDatabaseHelper.DATE_MILLIS, dateTimeMillis);
    contentValue.put(MyDatabaseHelper.MESSAGE, msg);

    //insert data in DB
    database.insert("your_table_name", null, contentValue);

   //Close the DB connection.
   dbHelper.close(); 

}

Now, your data (date is in currentTimeMilliseconds) is get inserted in DB .

अगला चरण है, जब आप DB से डेटा पुनः प्राप्त करना चाहते हैं तो आपको संबंधित दिनांक समय मिलीसेकंड को संबंधित तिथि में बदलने की आवश्यकता है। नीचे समान करने के लिए नमूना कोड स्निपेट है

  1. दिनांक स्ट्रिंग में दिनांक मिलीसेकंड परिवर्तित करें।
public static String getDate(long milliSeconds, String dateFormat)
{
    // Create a DateFormatter object for displaying date in specified format.
    SimpleDateFormat formatter = new SimpleDateFormat(dateFormat/*"yyyy/MM/dd HH:mm:ss"*/);

    // Create a calendar object that will convert the date and time value in milliseconds to date.
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(milliSeconds);
    return formatter.format(calendar.getTime());
}
  1. अब, अंत में डेटा प्राप्त करें और इसका कार्य देखें ...
public ArrayList<String> fetchData() {

    ArrayList<String> listOfAllDates = new ArrayList<String>();
    String cDate = null;

    MyDatabaseHelper dbHelper = new MyDatabaseHelper("your_app_context");
    database = dbHelper.getWritableDatabase();

    String[] columns = new String[] {MyDatabaseHelper.DATE_MILLIS, MyDatabaseHelper.MESSAGE};
    Cursor cursor = database.query("your_table_name", columns, null, null, null, null, null);

    if (cursor != null) {

        if (cursor.moveToFirst()){
            do{
                //iterate the cursor to get data.
                cDate = getDate(cursor.getLong(cursor.getColumnIndex(MyDatabaseHelper.DATE_MILLIS)), "yyyy/MM/dd HH:mm:ss");

                listOfAllDates.add(cDate);

            }while(cursor.moveToNext());
        }
        cursor.close();

    //Close the DB connection.
    dbHelper.close(); 

    return listOfAllDates;

}

आशा है कि यह सब मदद करेगा! :)


SQLite लंबे डेटाटाइप का समर्थन नहीं करता है। संपादित करें: मेरी गलती, INTEGER 8 बाइट लंबी है, इसलिए इसे इस डेटाटाइप का समर्थन करना चाहिए।
एंटोनियो वाल्सिक


1

यह मेरे लिए ज़्यादा प्रधान है। यह सबसे अच्छा तरीका नहीं है, लेकिन एक तेज़ समाधान है।

//Building the table includes:
StringBuilder query= new StringBuilder();
query.append("CREATE TABLE "+TABLE_NAME+ " (");
query.append(COLUMN_ID+"int primary key autoincrement,");
query.append(COLUMN_CREATION_DATE+" DATE)");

//Inserting the data includes this:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
values.put(COLUMN_CREATION_DATE,dateFormat.format(reactionGame.getCreationDate())); 

// Fetching the data includes this:
try {
   java.util.Date creationDate = dateFormat.parse(cursor.getString(0);
   YourObject.setCreationDate(creationDate));
} catch (Exception e) {
   YourObject.setCreationDate(null);
}

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.