2011-12-08 13 views
5

संभव डुप्लिकेट:
Calculate date/time difference in javaजावा में मिलीसेकेंड में एक तारीख स्ट्रिंग परिवर्तित

कैसे इस तरह के Sat Feb के रूप में एक भविष्य की तारीख 17 2012 जावा में मिलीसेकेंड में परिवर्तित किया जाएगा तो हो सकता है कि वर्तमान समय से मिलीसेकंड में घटाया गया ताकि भविष्य की तारीख तक शेष समय शेष हो सके।

+1

डेट-टाइम अवगत लाइब्रेरी का उपयोग करना अक्सर बेहतर होता है (उदा। [जोडा टाइम)] (http://joda-time.sourceforge.net/0) मिलीसेकंड में कनवर्ट करने के लिए और फिर वापस कनवर्ट करने के लिए: मिलीसेकंड टाइमजोन मतभेद, 30 दिनों के बिना महीनों, लीप साल आदि जैसी चीजों में जानकारी खो सकता है। इसलिए सटीकता के स्तर के आधार पर ... –

उत्तर

19

नमूने के माध्यम से पालन करें सरल तकनीक DateFormat उपयोग करने के लिए होगा:

String input = "Sat Feb 17 2012"; 
Date date = new SimpleDateFormat("EEE MMM dd yyyy", Locale.ENGLISH).parse(input); 
long milliseconds = date.getTime(); 
long millisecondsFromNow = milliseconds - (new Date()).getTime(); 
Toast.makeText(this, "Milliseconds to future date="+millisecondsFromNow, Toast.LENGTH_SHORT).show(); 

एक और अधिक कठिन तकनीक (कि मूल रूप से क्या DateFormat आप के लिए करता है) यह अपने आप को पार्स शामिल (यह नहींसर्वोत्तम अभ्यास माना जाएगा):

String input = "Sat Feb 17 2012"; 
String[] myDate = input.split("\\s+"); 
int year = Integer.parseInt(myDate[3]); 
String monthString = myDate[1]; 
int mo = monthString.equals("Jan")? Calendar.JANUARY : 
      monthString.equals("Feb")? Calendar.FEBRUARY : 
      monthString.equals("Mar")? Calendar.MARCH : 
      monthString.equals("Apr")? Calendar.APRIL : 
      monthString.equals("May")? Calendar.MAY : 
      monthString.equals("Jun")? Calendar.JUNE : 
      monthString.equals("Jul")? Calendar.JULY : 
      monthString.equals("Aug")? Calendar.AUGUST : 
      monthString.equals("Sep")? Calendar.SEPTEMBER : 
      monthString.equals("Oct")? Calendar.OCTOBER : 
      monthString.equals("Nov")? Calendar.NOVEMBER : 
      monthString.equals("Dec")? Calendar.DECEMBER : 0; 
int day = Integer.parseInt(myDate[2]); 
Calendar c = Calendar.getInstance(); 
c.set(year, mo, day); 
long then = c.getTimeInMillis(); 
Time current_time = new Time(); 
current_time.setToNow(); 
long now = current_time.toMillis(false); 
long future = then - now; 
Date d = new Date(future); 
//TODO use d as you need. 
Toast.makeText(this, "Milliseconds to future date="+future, Toast.LENGTH_SHORT).show(); 
+0

या, आप कोड की 2 पंक्तियों में ऐसा करने के लिए SimpleDateFormat का उपयोग कर सकते हैं। – dusktreader

+2

@dusktreader, यदि आप वोट डाउन करने और एक नया सुझाव प्रदान करने जा रहे हैं, तो आपको कम से कम कोड प्रदान करना चाहिए। मेरा जवाब बहुत अच्छी तरह से सोचा गया है और बहुत सारे कामकाजी कोड प्रदान करता है। यह निश्चित रूप से नीचे वोट के लायक नहीं है, और आपकी टिप्पणी उत्पादक नहीं है। – Phil

+3

यह एक खराब कोडिंग अभ्यास का एक उत्कृष्ट उदाहरण है जो मैं हर समय देखता हूं। यह कार्यक्षमता एक बहुत ही सरल और साफ इंटरफेस में प्रदान की जाती है। अपने आप को रोलिंग विरोधी उत्पादक है। मैं नीचे आ गया क्योंकि मैंने ईमानदारी से महसूस किया कि यह एक गरीब जवाब था, और मैंने आपको यह बताने के लिए भी टिप्पणी की कि (जिसे मुझे करने की आवश्यकता नहीं थी)। यहां कोड है, भले ही यह एक मृत विषय है जो आधे साल के लिए बंद कर दिया गया है: डेटफॉर्मैट प्रारूप = नया SimpleDateFormat ("EEE MMM dd yyyy"); लंबी मिलिस = format.parse ("शनि फरवरी 17 2012")। GetTime(); – dusktreader

4

फ़र्ट्स, आपको अपनी दिनांक प्रस्तुति प्राप्त करने के लिए स्ट्रिंग को पार्स करना होगा। Here उदाहरण और कुछ दस्तावेज़ हैं। फिर आप अपनी तिथि के getTime() विधि को कॉल करें।

+0

लिंक अब और काम नहीं करता है। – Codeversed

2

दर्रा वर्ष, माह और इस कोड और चर diff की तारीख उस समय तक मिलीसेकंड समय दे देंगे में भविष्य की तारीख के दिन,

Date date = new GregorianCalendar(year, month, day).getTime(); 
    Date today = new Date(); 
    long diff = date.getTime() - today.getTime(); 
3
DateFormat format = new SimpleDateFormat("EEE MMM dd yyyy", Locale.US); 
long futureTime = 0; 
try { 
    Date date = format.parse("Sat Feb 17 2012"); 
    futureTime = date.getTime(); 
} catch (ParseException e) { 
    Log.e("log", e.getMessage(), e); 
} 

long curTime = System.currentTimeMillis(); 
long diff = futureTime - curTime; 
1

आप बस getTime कॉल कर सकते हैं() तिथि वस्तु की विधि। नीचे

import java.util.Date; 

public class Test { 
    @SuppressWarnings("deprecation") 
    public static void main(String[] args) { 

     System.out.println(new Date("Sat Feb 17 2012").getTime()); 

    } 

} 
1
try { String str_date="11-June-07"; 
    SimpleDateFormat formatter ; 
    Date date ; 
    formatter = new SimpleDateFormat("dd-MMM-yy"); 
    date = (Date) formatter.parse(str_date); 
    Log.i("test",""+date); 
    } catch (Exception e) 
    {System.out.println("Exception :"+e); } 

    Date d = new Date(); 
    long time = d.getTime(); 
    long timeDiff = time - lastTime; 

//timeDiff will contain your value. 
//import these two, 
//import java.text.SimpleDateFormat; 
//import java.util.Date; 
संबंधित मुद्दे

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