जवाबों:
मानक Java DateFormat वर्ग का उपयोग करें।
उदाहरण के लिए वर्तमान तिथि और समय प्रदर्शित करने के लिए निम्न कार्य करें:
Date date = new Date(location.getTime());
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
आप अपने स्वयं के मूल्यों के साथ दिनांक ऑब्जेक्ट को इनिशियलाइज़ कर सकते हैं, हालाँकि आपको इस बात की जानकारी होनी चाहिए कि कंस्ट्रक्टरों को हटा दिया गया है और आपको वास्तव में जावा कैलेंडर ऑब्जेक्ट का उपयोग करना चाहिए।
DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
लौटा हुआ दिनांक फ़र्मरेट प्रकार का है java.text.DateFormat
(और नहीं android.text.format.DateFormat
)
मेरी राय में, android.text.format.DateFormat.getDateFormat(context)
मुझे भ्रमित करता है क्योंकि यह विधि - - "के java.text.DateFormat
बजाय वापस आती है android.text.format.DateFormat
।
इसलिए, मैं अपने प्रारूप में वर्तमान तिथि / समय प्राप्त करने के लिए नीचे दिए गए खंड कोड का उपयोग करता हूं।
android.text.format.DateFormat df = new android.text.format.DateFormat();
df.format("yyyy-MM-dd hh:mm:ss a", new java.util.Date());
or
android.text.format.DateFormat.format("yyyy-MM-dd hh:mm:ss a", new java.util.Date());
इसके अलावा, आप अन्य प्रारूपों का उपयोग कर सकते हैं। DateFormat का पालन करें ।
hh:mm:ss
आप दे देंगे 01:00:00
1 PM के लिए, आप का उपयोग करना होगा kk:mm:ss
प्राप्त करने के लिए13:00:00
k
दिन में घंटे (1-24) है, क्या आपका मतलब यह नहीं है H
, जो दिन में घंटे (0-23), उदा। HH: mm: ss? देखें: developer.android.com/reference/java/text/SimpleDateFormat.html
java.text.SimpleDateFormat
(आपके द्वारा लिंक किए गए और H
0-23 रेंज में घंटों के लिए उपयोग किए जाने वाले) और android.text.format.DateFormat
( 0-23 रेंज में घंटों के बारे में क्या जवाब है और उपयोग करता है k
) के बीच
k
, हालांकि, DateFormat
स्पष्ट रूप से राज्यों के लिए प्रलेखन प्रारूप के तार के विहित प्रलेखन के लिए, SimpleDateFormat देखें। बहुत ज्यादा उलझन। या क्या मैं कुछ न कुछ भूल रहा हूं?
आप उपयोग कर सकते हैं DateFormat
। परिणाम फोन के डिफ़ॉल्ट लोकेल पर निर्भर करता है, लेकिन आप लोकेल को भी निर्दिष्ट कर सकते हैं:
https://developer.android.com/reference/java/text/DateFormat.html
यह एक पर परिणाम है
DateFormat.getDateInstance().format(date)
एफआर लोकेल: 3 नोव। 2017
यूएस / एन लोकेल: 12 जनवरी, 1952
DateFormat.getDateInstance(DateFormat.SHORT).format(date)
FR लोकेल: 03/11/2017
यूएस / एन लोकेल: 12.13.52
DateFormat.getDateInstance(DateFormat.MEDIUM).format(date)
एफआर लोकेल: 3 नोव। 2017
यूएस / एन लोकेल: 12 जनवरी, 1952
DateFormat.getDateInstance(DateFormat.LONG).format(date)
एफआर लोकेल: 3 नोवम्ब्रे 2017
यूएस / एन लोकेल: 12 जनवरी, 1952
DateFormat.getDateInstance(DateFormat.FULL).format(date)
एफआर लोकेल: वेजग्रेडी 3 नोवम्ब्रे 2017
यूएस / एन लोकेल: मंगलवार, 12 अप्रैल, 1952
DateFormat.getDateTimeInstance().format(date)
एफआर लोकेल: 3 नोव। 2017 16:04:58
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(date)
FR लोकेल: 03/11/2017 16:04
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM).format(date)
FR लोकेल: 03/11/2017 16:04:58
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG).format(date)
FR लोकेल: 03/11/2017 16:04:58 GMT + 01: 00
DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.FULL).format(date)
एफआर लोकेल: 03/11/2017 16:04:58 हेयर्ड नॉर्माले डी 'इरोपे सेंट्रेल
DateFormat.getTimeInstance().format(date)
एफआर लोकेल: 16:04:58
DateFormat.getTimeInstance(DateFormat.SHORT).format(date)
एफआर लोकेल: 16:04
DateFormat.getTimeInstance(DateFormat.MEDIUM).format(date)
एफआर लोकेल: 16:04:58
DateFormat.getTimeInstance(DateFormat.LONG).format(date)
एफआर लोकेल: 16:04:58 जीएमटी + 01: 00
DateFormat.getTimeInstance(DateFormat.FULL).format(date)
एफआर लोकेल: 16:04:58 हेयर्ड नॉर्माले डी 'यूरोपे सेंट्रेल
स्थान की तारीख स्ट्रिंग के लिए दिनांक:
Date date = new Date();
String stringDate = DateFormat.getDateTimeInstance().format(date);
विकल्प:
DateFormat.getDateInstance()
-> 31 दिसंबर, 1969
DateFormat.getDateTimeInstance()
-> 31 दिसंबर, 1969 4:00:00 अपराह्न
DateFormat.getTimeInstance()
-> 4:00:00 अपराह्न
यह यह करेगा:
Date date = new Date();
java.text.DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTimeText.setText("Time: " + dateFormat.format(date));
SimpleDateFormat का उपयोग करें
ऐशे ही:
event.putExtra("starttime", "12/18/2012");
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
Date date = format.parse(bundle.getString("starttime"));
new SimpleDateFormat("my-format", Locale.getDefault());
इसके बाद: http://developer.android.com/reference/android/text/format/Time.html
Android देशी समय वर्ग का उपयोग करना बेहतर है:
Time now = new Time();
now.setToNow();
फिर प्रारूप:
Log.d("DEBUG", "Time "+now.format("%d.%m.%Y %H.%M.%S"));
इन दोनों का उपयोग वर्ग चर के रूप में करें:
public java.text.DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
private Calendar mDate = null;
और इसे इस तरह से उपयोग करें:
mDate = Calendar.getInstance();
mDate.set(year,months,day);
dateFormat.format(mDate.getTime());
यह मेरी विधि है, आप परिभाषित कर सकते हैं और इनपुट और आउटपुट प्रारूप।
public static String formattedDateFromString(String inputFormat, String outputFormat, String inputDate){
if(inputFormat.equals("")){ // if inputFormat = "", set a default input format.
inputFormat = "yyyy-MM-dd hh:mm:ss";
}
if(outputFormat.equals("")){
outputFormat = "EEEE d 'de' MMMM 'del' yyyy"; // if inputFormat = "", set a default output format.
}
Date parsed = null;
String outputDate = "";
SimpleDateFormat df_input = new SimpleDateFormat(inputFormat, java.util.Locale.getDefault());
SimpleDateFormat df_output = new SimpleDateFormat(outputFormat, java.util.Locale.getDefault());
// You can set a different Locale, This example set a locale of Country Mexico.
//SimpleDateFormat df_input = new SimpleDateFormat(inputFormat, new Locale("es", "MX"));
//SimpleDateFormat df_output = new SimpleDateFormat(outputFormat, new Locale("es", "MX"));
try {
parsed = df_input.parse(inputDate);
outputDate = df_output.format(parsed);
} catch (Exception e) {
Log.e("formattedDateFromString", "Exception in formateDateFromstring(): " + e.getMessage());
}
return outputDate;
}
मैं डिवाइस के छंटनी प्रारूप में सिस्टम से वास्तविक तिथि और समय प्राप्त करने के लिए कस्टम पैटर्न के बिना SimpleDateFormat का उपयोग करता हूं :
public static String getFormattedDate() {
//SimpleDateFormat called without pattern
return new SimpleDateFormat().format(Calendar.getInstance().getTime());
}
रिटर्न :
टाइम क्लास में बिल्ड का उपयोग करें!
Time time = new Time();
time.set(0, 0, 17, 4, 5, 1999);
Log.i("DateTime", time.format("%d.%m.%Y %H:%M:%S"));
अन्य उत्तर आम तौर पर सही होते हैं। मुझे आधुनिक उत्तर में योगदान देना चाहिए। कक्षाएं Date
, DateFormat
और SimpleDateFormat
अधिकांश अन्य उत्तरों में उपयोग की जाने वाली, लंबे समय तक पुरानी हैं और कई वर्षों से कई प्रोग्रामर के लिए परेशानी का कारण बनी हुई हैं। आज हमारे पास java.time
AKA JSR-310, आधुनिक जावा तिथि और समय एपीआई में इतना बेहतर है । क्या आप अभी तक Android पर इसका उपयोग कर सकते हैं? सबसे निश्चित रूप से! थ्रीटेनेबप प्रोजेक्ट में आधुनिक कक्षाओं को एंड्रॉइड पर वापस भेज दिया गया है। इस प्रश्न को देखें : सभी विवरणों के लिए एंड्रॉइड प्रोजेक्ट में थ्रीटेनबप का उपयोग कैसे करें ।
यह स्निपेट आपको आरंभ करना चाहिए:
int year = 2017, month = 9, day = 28, hour = 22, minute = 45;
LocalDateTime dateTime = LocalDateTime.of(year, month, day, hour, minute);
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
System.out.println(dateTime.format(formatter));
जब मैं अपने कंप्यूटर की पसंदीदा भाषा US अंग्रेजी या UK अंग्रेजी में सेट करता हूं, तो यह प्रिंट करता है:
Sep 28, 2017 10:45:00 PM
जब इसके बजाय मैंने इसे डेनिश में सेट किया, तो मैंने पाया:
28-09-2017 22:45:00
तो यह कॉन्फ़िगरेशन का पालन करता है। मैं इस बात को लेकर अनिश्चित हूं कि यह आपके डिवाइस की तारीख और समय की सेटिंग का क्या विवरण देता है, हालांकि, और यह फोन से फोन पर भिन्न हो सकता है।
यह कोड मेरे लिए काम करता है!
Date d = new Date();
CharSequence s = android.text.format.DateFormat.format("MM-dd-yy hh-mm-ss",d.getTime());
Toast.makeText(this,s.toString(),Toast.LENGTH_SHORT).show();
मिलीसेकंड से स्थानीय प्रारूप में दिनांक या समय प्राप्त करने के लिए मैंने इसका उपयोग किया:
Date date = new Date(milliseconds);
DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, Locale.getDefault());
dateFormat.format(date);
Date date = new Date(milliseconds);
DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.getDefault());
dateFormat.format(date);
Date date = new Date(milliseconds);
DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.SHORT, Locale.getDefault());
dateFormat.format(date);
आप अन्य दिनांक शैली और समय शैली का उपयोग कर सकते हैं। शैलियों के बारे में अधिक जानकारी यहाँ ।
सबसे छोटा तरीका:
// 2019-03-29 16:11
String.format("%1$tY-%<tm-%<td %<tR", Calendar.getInstance())
%tR
के लिए कम है %tH:%tM
, <
अंतिम पैरामीटर ( 1$
) का पुन: उपयोग करने का मतलब है ।
के बराबर है String.format("%1$tY-%1$tm-%1$td %1$tH:%1$tM", Calendar.getInstance())
https://developer.android.com/reference/java/util/Formatter.html
प्रयत्न:
event.putExtra("startTime", "10/05/2012");
और जब आप पास किए गए चर तक पहुँच रहे हैं:
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date date = formatter.parse(bundle.getString("startTime"));
मैं इसे इस तरह से उपयोग करता हूं:
public class DateUtils {
static DateUtils instance;
private final DateFormat dateFormat;
private final DateFormat timeFormat;
private DateUtils() {
dateFormat = android.text.format.DateFormat.getDateFormat(MainApplication.context);
timeFormat = android.text.format.DateFormat.getTimeFormat(MainApplication.context);
}
public static DateUtils getInstance() {
if (instance == null) {
instance = new DateUtils();
}
return instance;
}
public synchronized static String formatDateTime(long timestamp) {
long milliseconds = timestamp * 1000;
Date dateTime = new Date(milliseconds);
String date = getInstance().dateFormat.format(dateTime);
String time = getInstance().timeFormat.format(dateTime);
return date + " " + time;
}
}
Java.util.Date और .Calendar और SimpleDateFormat in Java (और Android) कुख्यात रूप से परेशान करने वाले हैं। इनसे बचें। वे इतने बुरे हैं कि Sun / Oracle ने उन्हें छोड़ दिया, जावा 8 में नए java.time पैकेज के साथ उन्हें दबा दिया (2014 तक एंड्रॉइड में नहीं)। नया जोडा-टाइम लाइब्रेरी java.time
से प्रेरित था ।
Joda-Time Android में काम करता है।
कई उदाहरण और बहुत चर्चा खोजने के लिए "Joda" के लिए StackOverflow खोजें।
जोडा-टाइम 2.4 का उपयोग करके सोर्स कोड का एक टिडबिट।
मानक प्रारूप।
String output = DateTime.now().toString();
// Current date-time in user's default time zone with a String representation formatted to the ISO 8601 standard.
स्थानीय स्वरूप।
String output = DateTimeFormat.forStyle( "FF" ).print( DateTime.now() );
// Full (long) format localized for this user's language and culture.
2016 में वापस, जब मैं प्रारूप को अनुकूलित करना चाहता हूं (डिवाइस कॉन्फ़िगरेशन के अनुसार नहीं, जैसा कि आप पूछते हैं ...) मैं आमतौर पर स्ट्रिंग संसाधन फ़ाइल का उपयोग करता हूं:
in strings.xml:
<string name="myDateFormat"><xliff:g id="myDateFormat">%1$td/%1$tm/%1$tY</xliff:g></string>
गतिविधि में:
Log.d(TAG, "my custom date format: "+getString(R.string.myDateFormat, new Date()));
यह नई दिनांक बंधन लाइब्रेरी की रिलीज़ के साथ भी उपयोगी है ।
तो मेरे पास लेआउट फ़ाइल में ऐसा कुछ हो सकता है:
<TextView
android:id="@+id/text_release_date"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1"
android:padding="2dp"
android:text="@{@string/myDateFormat(vm.releaseDate)}"
tools:text="0000"
/>
और जावा वर्ग में:
MovieDetailViewModel vm = new MovieDetailViewModel();
vm.setReleaseDate(new Date());
एंड्रॉइड टाइम क्लास 3 प्रारूपण विधियां प्रदान करता है http://developer.android.com/reference/android/text/format/Time.html
मैंने इस तरह से इसे किया:
/**
* This method will format the data from the android Time class (eg. myTime.setToNow()) into the format
* Date: dd.mm.yy Time: hh.mm.ss
*/
private String formatTime(String time)
{
String fullTime= "";
String[] sa = new String[2];
if(time.length()>1)
{
Time t = new Time(Time.getCurrentTimezone());
t.parse(time);
// or t.setToNow();
String formattedTime = t.format("%d.%m.%Y %H.%M.%S");
int x = 0;
for(String s : formattedTime.split("\\s",2))
{
System.out.println("Value = " + s);
sa[x] = s;
x++;
}
fullTime = "Date: " + sa[0] + " Time: " + sa[1];
}
else{
fullTime = "No time data";
}
return fullTime;
}
मुझे आशा है कि मददगार :-)
बहुत देर हो चुकी है लेकिन यह किसी की मदद कर सकता है
DateFormat.format(format, timeInMillis);
यहाँ format
क्या प्रारूप आप की जरूरत है
ex: "HH: mm" 15:30 देता है