android में मिलीसेकेंड को दिनांक स्वरूप में कैसे परिवर्तित करें?


100

मेरे पास मिलीसेकंड है। मुझे इसकी तिथि प्रारूप में परिवर्तित करने की आवश्यकता है

उदाहरण:

23/10/2011

उसकी प्राप्ति कैसे हो?

जवाबों:


206

बस इस नमूना कोड का प्रयास करें: -

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;


public class Test {

/**
 * Main Method
 */
public static void main(String[] args) {
    System.out.println(getDate(82233213123L, "dd/MM/yyyy hh:mm:ss.SSS"));
}


/**
 * Return date in specified format.
 * @param milliSeconds Date in milliseconds
 * @param dateFormat Date format 
 * @return String representing date in specified format
 */
public static String getDate(long milliSeconds, String dateFormat)
{
    // Create a DateFormatter object for displaying date in specified format.
    SimpleDateFormat formatter = new SimpleDateFormat(dateFormat);

    // 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());
}
}

मुझे उम्मीद है कि इस मदद ...


यह 10 से अधिक अंकों के लंबे मूल्य पर काम करता है, लेकिन 6 से नीचे की ओर नहीं। घंटे का डिफ़ॉल्ट 4 है .. ???
राल्फगैब

5
आप का उपयोग करना चाहिए नई SimpleDateFormat (DateFormat, Locale.US ( या अपने स्थान )) के बजाय नया SimpleDateFormat (DateFormat) क्योंकि यह के कारणों परिवर्तन डिफ़ॉल्ट एंड्रॉयड भाषा की वजह से दुर्घटना,
आमिर हुसैन घसेमी

2
FYI करें, जैसे परेशानी पुराने तिथि-समय कक्षाएं java.util.Date, java.util.Calendarऔर java.text.SimpleDateFormatअब कर रहे हैं विरासत, द्वारा का स्थान ले लिया java.time कक्षाएं। जावा- टाइम की अधिकांश कार्यक्षमता थ्रीटेन-बैकपोर्ट परियोजना में जावा 6 और जावा 7 में बैक-पोर्ट की गई है। इसके अलावा तीनटैनबप प्रोजेक्ट में पहले के एंड्रॉइड के लिए अनुकूलित । देखें कि थ्रीटेबैप का उपयोग कैसे करें…
बेसिल बॉर्क

@ उट्टम यह काम करता है धन्यवाद !, लेकिन मेरा एक सवाल था। क्या हमें इस "/ दिनांक (1224043200000) /" प्रारूप में समय और तारीख प्राप्त करनी चाहिए? मैंने पढ़ा है कि इसका Microsoft का पुराना json प्रारूप है और इसे नए विकास में उपयोग नहीं किया जाना चाहिए।
एल्डर

79

उदाहरण के लिए मिलीसेकंड मान परिवर्तित करें Dateऔर इसे चुने हुए फ़ॉर्मेटर में पास करें।

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
String dateString = formatter.format(new Date(dateInMillis)));

36
public static String convertDate(String dateInMilliseconds,String dateFormat) {
    return DateFormat.format(dateFormat, Long.parseLong(dateInMilliseconds)).toString();
}

इस फ़ंक्शन को कॉल करें

convertDate("82233213123","dd/MM/yyyy hh:mm:ss");

2
धन्यवाद महमूद, इस समाधान के लिए एपीआई स्तर 1 (मेरी परियोजना को एपीआई 15 पर उतारा जाता है) की आवश्यकता होती है, जबकि अन्य उत्तर के लिए एपीआई स्तर 24 (दिनांक और / या कैलेंडर पुस्तकालय) की आवश्यकता होती है
स्टीव रोजर्स

क्या हो अगर तुम अमेरिकी हो?
बेथेल


10

कोशिश करें कि यह कोड आपकी आवश्यकताओं के अनुरूप इसे संशोधित करने में मदद करे

SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Date d = format.parse(fileDate);

8

मैं अंत में सामान्य कोड ढूंढता हूं जो मेरे लिए काम करता है

Long longDate = Long.valueOf(date);

Calendar cal = Calendar.getInstance();
int offset = cal.getTimeZone().getOffset(cal.getTimeInMillis());
Date da = new Date(); 
da = new Date(longDate-(long)offset);
cal.setTime(da);

String time =cal.getTime().toLocaleString(); 
//this is full string        

time = DateFormat.getTimeInstance(DateFormat.MEDIUM).format(da);
//this is only time

time = DateFormat.getDateInstance(DateFormat.MEDIUM).format(da);
//this is only date

6

tl; डॉ

Instant.ofEpochMilli( myMillisSinceEpoch )           // Convert count-of-milliseconds-since-epoch into a date-time in UTC (`Instant`).
    .atZone( ZoneId.of( "Africa/Tunis" ) )           // Adjust into the wall-clock time used by the people of a particular region (a time zone). Produces a `ZonedDateTime` object.
    .toLocalDate()                                   // Extract the date-only value (a `LocalDate` object) from the `ZonedDateTime` object, without time-of-day and without time zone.
    .format(                                         // Generate a string to textually represent the date value.
        DateTimeFormatter.ofPattern( "dd/MM/uuuu" )  // Specify a formatting pattern. Tip: Consider using `DateTimeFormatter.ofLocalized…` instead to soft-code the formatting pattern.
    )                                                // Returns a `String` object.

java.time

आधुनिक दृष्टिकोण java.time वर्गों का उपयोग करता है जो अन्य सभी उत्तरों द्वारा उपयोग की जाने वाली परेशानी पुरानी विरासत तिथि-समय कक्षाओं को दबा देता है

यह मानते हुए कि आपके पास longUTC, 1970-01-01T00: 00: 00Z ... में 1970 के पहले क्षण के संदर्भ के बाद से कई मिलीसेकंड हैं ...

Instant instant = Instant.ofEpochMilli( myMillisSinceEpoch ) ;

तिथि प्राप्त करने के लिए एक समय क्षेत्र की आवश्यकता होती है। किसी भी क्षण के लिए, तिथि क्षेत्र के अनुसार दुनिया भर में भिन्न होती है।

ZoneId z = ZoneId.of( "Pacific/Auckland" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;  // Same moment, different wall-clock time.

केवल दिनांक मान निकालें।

LocalDate ld = zdt.toLocalDate() ;

मानक ISO 8601 प्रारूप का उपयोग करके उस मान का प्रतिनिधित्व करने वाला स्ट्रिंग उत्पन्न करें।

String output = ld.toString() ;

कस्टम प्रारूप में एक स्ट्रिंग उत्पन्न करें।

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;
String output = ld.format( f ) ;

युक्ति: java.time को हार्ड-कोड स्वरूपण पैटर्न के बजाय स्वचालित रूप से आपके लिए स्थानीय बनाने पर विचार करें । DateTimeFormatter.ofLocalized…विधियों का उपयोग करें ।


जावा के बारे में

Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date, Calendar, और SimpleDateFormat

Joda समय परियोजना, अब में रखरखाव मोड , प्रवास करने की सलाह देता java.time कक्षाएं।

अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है

आप अपने डेटाबेस से सीधे java.time ऑब्जेक्ट्स का आदान-प्रदान कर सकते हैं । JDBC 4.2 या उसके बाद के JDBC ड्राइवर का अनुपालन करें । तार की कोई जरूरत नहीं, कक्षाओं की कोई जरूरत नहीं ।java.sql.*

Java.time कक्षाएं कहाँ से प्राप्त करें?

ThreeTen-अतिरिक्त परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के संभावित भविष्य के अतिरिक्त के लिए एक साबित जमीन है। आप यहाँ कुछ उपयोगी वर्गों जैसे मिल सकता है Interval, YearWeek, YearQuarter, और अधिक


5

लघु और प्रभावी:

DateFormat.getDateTimeInstance().format(new Date(myMillisValue))

4
public class LogicconvertmillistotimeActivity extends Activity {
    /** Called when the activity is first created. */
     EditText millisedit;
        Button   millisbutton;
        TextView  millistextview;
        long millislong;
        String millisstring;
        int millisec=0,sec=0,min=0,hour=0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        millisedit=(EditText)findViewById(R.id.editText1);
        millisbutton=(Button)findViewById(R.id.button1);
        millistextview=(TextView)findViewById(R.id.textView1);
        millisbutton.setOnClickListener(new View.OnClickListener() {            
            @Override
            public void onClick(View v) {   
                millisbutton.setClickable(false);
                millisec=0;
                sec=0;
                min=0;
                hour=0;
                millisstring=millisedit.getText().toString().trim();
                millislong= Long.parseLong(millisstring);
                Calendar cal = Calendar.getInstance();
                SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
                if(millislong>1000){
                    sec=(int) (millislong/1000);
                    millisec=(int)millislong%1000;
                    if(sec>=60){
                        min=sec/60;
                        sec=sec%60;
                    }
                    if(min>=60){
                        hour=min/60;
                        min=min%60;
                    }
                }
                else
                {
                    millisec=(int)millislong;
                }
                cal.clear();
                cal.set(Calendar.HOUR_OF_DAY,hour);
                cal.set(Calendar.MINUTE,min);
                cal.set(Calendar.SECOND, sec);
                cal.set(Calendar.MILLISECOND,millisec);
                String DateFormat = formatter.format(cal.getTime());
//              DateFormat = "";
                millistextview.setText(DateFormat);

            }
        });
    }
}

हम इसे टाइम यूनिट का उपयोग करके कर सकते हैं..लेकिन यह ठीक काम नहीं करता है ... इस का उपयोग करें..यह आपकी मदद करेगा..यह ठीक काम करता है
गद्दाम नागराजू

2
    public static Date getDateFromString(String date) {

    Date dt = null;
    if (date != null) {
        for (String sdf : supportedDateFormats) {
            try {
                dt = new Date(new SimpleDateFormat(sdf).parse(date).getTime());
                break;
            } catch (ParseException pe) {
                pe.printStackTrace();
            }
        }
    }
    return dt;
}

public static Calendar getCalenderFromDate(Date date){
    Calendar cal =Calendar.getInstance();
    cal.setTime(date);return cal;

}
public static Calendar getCalenderFromString(String s_date){
    Date date = getDateFromString(s_date);
    Calendar cal = getCalenderFromDate(date);
    return cal;
}

public static long getMiliSecondsFromString(String s_date){
    Date date = getDateFromString(s_date);
    Calendar cal = getCalenderFromDate(date);
    return cal.getTimeInMillis();
}

दिनांक को 2016-08-18 या किसी भी प्रकार के स्ट्रिंग प्रारूप में डेटफ़ॉर्मट में परिवर्तित करने के लिए इन विधियों का उपयोग करें और आप तिथि को मिलीसेकंड में भी परिवर्तित कर सकते हैं।
रविन्द्र राठौर

2

मैं काफी समय से ऐसा करने के लिए एक कुशल तरीका ढूंढ रहा हूं और मुझे जो सबसे अच्छा मिला है वह है:

DateFormat.getDateInstance(DateFormat.SHORT).format(new Date(millis));

लाभ:

  1. यह स्थानीयकृत है
  2. एपीआई 1 के बाद से Android में रहा
  3. बहुत आसान

नुकसान:

  1. सीमित प्रारूप विकल्प। FYI करें: SHORT केवल 2 अंकों का वर्ष है।
  2. आप हर बार दिनांक ऑब्जेक्ट जलाते हैं। मैंने अन्य विकल्पों के लिए स्रोत को देखा है और यह उनके ओवरहेड की तुलना में काफी मामूली है।

आप java.text.DateFormat ऑब्जेक्ट को कैश कर सकते हैं, लेकिन यह थ्रेडसेफ़ नहीं है। यह ठीक है अगर आप इसे यूआई थ्रेड पर उपयोग कर रहे हैं।


1
public static String toDateStr(long milliseconds, String format)
{
    Date date = new Date(milliseconds);
    SimpleDateFormat formatter = new SimpleDateFormat(format, Locale.US);
    return formatter.format(date);
}

1

यह कोटलिन का उपयोग करने का सबसे आसान तरीका है

private const val DATE_FORMAT = "dd/MM/yy hh:mm"

fun millisToDate(millis: Long) : String {
    return SimpleDateFormat(DATE_FORMAT, Locale.US).format(Date(millis))
}

(१) कृपया युवाओं को लंबे समय से पुराने और कुख्यात परेशान करने वाले SimpleDateFormatवर्ग का उपयोग करने की शिक्षा न दें । कम से कम पहले विकल्प के रूप में नहीं। और बिना किसी आरक्षण के नहीं। आज हमारे पास java.timeआधुनिक जावा तिथि और समय एपीआई और इसके बहुत बेहतर हैं DateTimeFormatter। हां, आप इसे एंड्रॉइड पर उपयोग कर सकते हैं। पुराने एंड्रॉइड उपयोग के लिए डीसुगरिंग का उपयोग करें या देखें कि एंड्रॉइड प्रोजेक्ट में थ्रीटेनबप का उपयोग कैसे करें
ओले वीवी

(२) मुझे नहीं लगता कि आपने निचले मामले का इरादा किया है hh? कृपया ऊपरी मामले और निचले मामले के बीच अंतर की जांच करें।
ओले वीवी

आधुनिक तरीका है: return Instant.ofEpochMilli(millis).atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern(DATE_FORMAT, Locale.US))। हां, यह लंबा है क्योंकि यह जो चल रहा है उसके बारे में अधिक जानकारी देता है, इसलिए यह एक फायदा है।
ओले वीवी

0

Android N और इसके बाद के संस्करण के लिए SimpleDateFormat का उपयोग करें। उदाहरण के लिए पूर्व संस्करणों के लिए कैलेंडर का उपयोग करें:

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        fileName = new SimpleDateFormat("yyyy-MM-dd-hh:mm:ss").format(new Date());
        Log.i("fileName before",fileName);
    }else{
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MONTH,1);
        String zamanl =""+cal.get(Calendar.YEAR)+"-"+cal.get(Calendar.MONTH)+"-"+cal.get(Calendar.DAY_OF_MONTH)+"-"+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE)+":"+cal.get(Calendar.SECOND);

        fileName= zamanl;
        Log.i("fileName after",fileName);
    }

आउटपुट:
फ़ाइल नाम से पहले: 2019-04-12-07: 14: 47  // SimpleDateFormat
फ़ाइल का उपयोग करें इसके बाद नाम: 2019-4-12-7: 13: 12        // उपयोग कैलेंडर


-1

आप java.util का निर्माण कर सकते हैं। मिलीसेकंड पर। और फिर इसे java.text.DateFormat के साथ स्ट्रिंग में बदल दिया।

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