2011-01-28 16 views
6

मैं एक एसक्यूएल SELECT क्वेरी का उपयोग कर एक स्ट्रिंग के रूप में सेट करने के लिए 'निश्चित' समय (मध्यरात्रि 24 घंटे घड़ी प्रारूप, यानी 00:00:00) बनाने की कोशिश कर रहा हूं निम्नलिखित ...ग्रेगोरियन कैलेंडर/कैलेंडर और एचओआर फ़ील्ड विषमता

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

GregorianCalendar todayDate = new GregorianCalendar(); 
Log.d(TAG, "todayDate: " + todayDate.getTime().toString()); 
Log.d(TAG, "formatted todayDate: " + sdf.format(todayDate.getTime())); 
todayDate.clear(Calendar.HOUR); 
todayDate.clear(Calendar.MINUTE); 
todayDate.clear(Calendar.SECOND); 
todayDate.set(Calendar.HOUR, 0); 
todayDate.set(Calendar.MINUTE, 0); 
todayDate.set(Calendar.SECOND, 0); 
Log.d(TAG, "formatted modified todayDate: " + sdf.format(todayDate.getTime())); 

यह ठीक है वर्तमान समय पीएम है। उदाहरण के लिए,

todayDate: Fri Jan 28 23:34:34 GMT 2011 
formatted todayDate: 2011-01-28 23:34:34 
formatted modified todayDate: 2011-01-28 12:00:00 <- THE hour is 12 not 00 

मैं ऐसा करते हैं तो जब वर्तमान समय आधी रात और दोपहर के बीच है (यानी, 00:00:00 -> 11:59:59 AM) तो स्वरूपित स्ट्रिंग में मेरी घंटे सही ढंग से है 00 पर सेट करें। अगर मैं इसे दोपहर के बाद और आधी रात से पहले करता हूं तो मुझे अपने घंटे के लिए 12 मिलते हैं और 00 नहीं।

क्या कोई इसे समझा सकता है और मुझे एक फिक्स (या चीजों को करने का वैकल्पिक तरीका) ढूंढने में मदद कर सकता है ?

उत्तर

11

आप HOUR_OF_DAY एपीआई docs से HOUR

todayDate.set(Calendar.HOUR_OF_DAY, 0); 

के बजाय 0 को निर्धारित करने की आवश्यकता: प्राप्त करने के लिए

HOUR फील्ड संख्या और सुबह या दोपहर के समय का संकेत सेट । घंटा का उपयोग 12 घंटे की घड़ी (0 - 11) के लिए किया जाता है। दोपहर और आधी रात को 0 से 12 तक नहीं दर्शाया जाता है, उदा। 10: 04: 15.250 अपराह्न एचओआर 10 है।

HOUR_OF_DAY दिन के घंटे को इंगित करने और सेट के लिए फ़ील्ड नंबर। HOUR_OF_DAY का उपयोग 24 घंटे की घड़ी के लिए किया जाता है। उदा।, 10: 04: 15.250 अपराह्न को HOUR_OF_DAY 22 है।

+0

आर्ग! मुझे विश्वास नहीं है कि यह इतना आसान था। धन्यवाद। – Squonk

+0

कोई चिंता नहीं .. :) – armandino