অ্যান্ড্রয়েডে কীভাবে মিলিসেকেন্ডগুলি ডেট ফর্ম্যাটে রূপান্তর করবেন?


104

আমার মিলি সেকেন্ড রয়েছে আমার এটির তারিখ বিন্যাসে রূপান্তর করা দরকার

উদাহরণ:

23/10/2011

কীভাবে এটি অর্জন করবেন?

উত্তর:


210

কেবলমাত্র এই নমুনা কোডটি ব্যবহার করে দেখুন: -

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 এর একটি ডিফল্ট থাকে .. ???
ralphgabb

4
আপনি ব্যবহার করা উচিত নতুন SimpleDateFormat (dateFormat, Locale.US ( অথবা আপনার লোকেল )) পরিবর্তে নতুন SimpleDateFormat (dateFormat) কারণ এটা কারণ পরিবর্তন ডিফল্ট অ্যান্ড্রয়েড ভাষা কারণে বিপর্যস্ত,
আমির হোসেন Ghasemi

4
অবগতির জন্য, যেমন বিরক্তিজনক পুরাতন তারিখ-সময় শ্রেণীর java.util.Date, java.util.Calendarএবং java.text.SimpleDateFormatএখন উত্তরাধিকার দ্বারা supplanted java.time ক্লাস। জাভা.টাইম কার্যকারিতাটির বেশিরভাগ থ্রিটেন-ব্যাকপোর্ট প্রকল্পে জাভা 6 এবং জাভা 7 -এ ব্যাকপোর্ট করা হয়থ্রিটেনএবিপি প্রকল্পে পূর্ববর্তী অ্যান্ড্রয়েডের জন্য আরও অভিযোজিত । দেখুন ThreeTenABP কীভাবে ব্যবহার করতে হয় ...
তুলসী বাউর্কে

@ উটম ধন্যবাদ জানায় !, তবে আমার একটি প্রশ্ন ছিল। আমাদের কি এই "/ তারিখ (1224043200000) /" ফর্ম্যাটে সময় এবং তারিখ পাওয়া উচিত? আমি পড়েছি এটি মাইক্রোসফ্টের একটি পুরানো জেসন ফর্ম্যাট এবং এটি নতুন বিকাশে ব্যবহার করা উচিত নয়।
অল্ডর

81

মিলিসেকেন্ড মানটিকে 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");

4
ধন্যবাদ মাহমুদ, এই সমাধানটির জন্য এপিআই লেভেল 1 প্রয়োজন (আমার প্রকল্পটি এপিআই 15 তে নামিয়ে দেওয়া হয়েছে) অন্য উত্তরগুলির জন্য এপিআই লেভেল 24 (তারিখ এবং / অথবা ক্যালেন্ডার লাইব্রেরি) প্রয়োজন
স্টিভ রজার্স

আপনি যদি আমেরিকান হন?
bellit


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

8

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

আধুনিক পদ্ধতির মধ্যে জাভা.টাইম ক্লাস ব্যবহার করা হয় যা অন্যান্য সমস্ত উত্তরগুলির দ্বারা ব্যবহৃত ঝামেলাযুক্ত পুরানো উত্তরাধিকারের তারিখ-সময় ক্লাসগুলিকে সহায়তা করে।

ধরে longনিই যে আপনার কাছে ইউটিসি, 1970-01-01T00: 00: 00Z… এর প্রথম মুহুর্তের প্রথম পর্বের রেফারেন্সের পর থেকে প্রচুর মিলিসেকেন্ড রয়েছে…

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

স্ট্যান্ডার্ড আইএসও 8601 ফর্ম্যাট ব্যবহার করে সেই মানটি উপস্থাপন করে একটি স্ট্রিং উত্পন্ন করুন।

String output = ld.toString() ;

কাস্টম ফর্ম্যাটে একটি স্ট্রিং উত্পন্ন করুন।

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

টিপ: হার্ড-কোড বিন্যাসকরণের প্যাটার্নের পরিবর্তে জাভা.টাইম আপনার জন্য স্বয়ংক্রিয়ভাবে স্থানীয়করণ বিবেচনা করুন । DateTimeFormatter.ofLocalized…পদ্ধতিগুলি ব্যবহার করুন ।


জাভা.টাইম সম্পর্কে

Java.time ফ্রেমওয়ার্ক জাভা 8 এবং পরে পাতাটা করা হয়। এই ক্লাসগুলি , & , এর মতো সমস্যাযুক্ত পুরানো উত্তরাধিকারের তারিখ-সময়ের ক্লাসগুলিকে সহায়তা করে ।java.util.DateCalendarSimpleDateFormat

Joda-টাইম প্রকল্প, এখন রক্ষণাবেক্ষণ মোড , মাইগ্রেশনে উপদেশ java.time ক্লাস।

আরও জানতে, ওরাকল টিউটোরিয়াল দেখুন । এবং অনেকগুলি উদাহরণ এবং ব্যাখ্যাগুলির জন্য স্ট্যাক ওভারফ্লো অনুসন্ধান করুন। স্পেসিফিকেশনটি জেএসআর 310

আপনি আপনার ডাটাবেসের সাথে জাভা.টাইম অবজেক্টগুলি সরাসরি বিনিময় করতে পারেন । জেডিবিসি ৪.২ বা তারপরের সাথে অনুগত একটি জেডিবিসি ড্রাইভার ব্যবহার করুন । স্ট্রিংগুলির দরকার নেই, ক্লাসের প্রয়োজন নেই ।java.sql.*

জাভা.টাইম ক্লাস কোথায় পাবেন?

ThreeTen-অতিরিক্ত প্রকল্প অতিরিক্ত শ্রেণীর সাথে java.time প্রসারিত করে। এই প্রকল্পটি জাভা.টাইমে সম্ভাব্য ভবিষ্যতের সংযোজনগুলির একটি প্রমাণযোগ্য ক্ষেত্র। আপনি এখানে কিছু দরকারী শ্রেণীর যেমন খুঁজে পেতে পারেন Interval, YearWeek, YearQuarter, এবং আরো



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 এর পর থেকে অ্যান্ড্রয়েডে এসেছে
  3. খুব সহজ

অসুবিধাগুলি:

  1. সীমিত বিন্যাস বিকল্প। এফওয়াইআই: শর্টটি কেবলমাত্র 2 ডিজিটের বছর।
  2. আপনি প্রতিবার একটি তারিখ অবজেক্ট বার্ন করেন। আমি অন্যান্য বিকল্পগুলির জন্য উত্স দেখেছি এবং এটি তাদের ওভারহেডের তুলনায় মোটামুটি নাবালিক।

আপনি java.text.DateFormat অবজেক্টটি ক্যাশে করতে পারেন, তবে এটি থ্রেডসেফ নয়। আপনি যদি এটি ইউআই থ্রেডে ব্যবহার করে থাকেন তবে এটি ঠিক আছে।



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))
}

(1) দয়া করে অল্পবয়সিদের দীর্ঘকালীন এবং কুখ্যাত সমস্যাযুক্ত SimpleDateFormatক্লাসটি ব্যবহার করতে শেখাবেন না । কমপক্ষে প্রথম বিকল্প হিসাবে না। এবং কোনও সংরক্ষণ ছাড়াও নয় without java.timeআধুনিক জাভা তারিখ এবং সময় এপিআই, এবং এর মধ্যে আজ আমরা আরও অনেক ভাল DateTimeFormatter। হ্যাঁ, আপনি এটি অ্যান্ড্রয়েডে ব্যবহার করতে পারেন। পুরানো অ্যান্ড্রয়েডের জন্য ডিজুয়ারিং ব্যবহার করুন বা অ্যান্ড্রয়েড প্রকল্পে থ্রিটেনএবিপি কীভাবে ব্যবহার করবেন তা দেখুন ।
ওলে ভিভি

(২) আমি মনে করি না আপনি লোয়ার কেস চেয়েছিলেন hh? দয়া করে এখানে বড় হাতের এবং ছোট হাতের মধ্যে পার্থক্য পরীক্ষা করুন।
ওলে ভিভি

আধুনিক উপায় হল: return Instant.ofEpochMilli(millis).atZone(ZoneId.systemDefault()).format(DateTimeFormatter.ofPattern(DATE_FORMAT, Locale.US))। হ্যাঁ, এটি দীর্ঘ কারণ এটি কী চলছে সে সম্পর্কে আরও তথ্য দেয়, সুতরাং এটি একটি সুবিধা।
ওলে ভিভি

@ ওলেভ.ভি. কলটির জন্য এপিআই স্তর 26 প্রয়োজন
রূপম দাস

@ রূপমদাস হয় পুরানো অ্যান্ড্রয়েড সংস্করণগুলিতে (এপিআই স্তরের ২ 26 অধীনে) জাভা.টাইম, আধুনিক জাভা তারিখ এবং সময় এপিআই, ব্যবহার করতে আপনার অ্যান্ড্রয়েড প্রকল্পে থ্রিগেনএবপি ব্যবহার করুন বা থ্রিজিএএনএবিপি যুক্ত করুন ।
ওলে ভিভি

0

উপরের অ্যান্ড্রয়েড এন এবং তার জন্য সিম্পলডেট ফরমেট ব্যবহার করুন। পূর্ববর্তী সংস্করণগুলির জন্য ক্যালেন্ডারটি উদাহরণস্বরূপ ব্যবহার করুন:

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  // সিম্পলডেট ফরমেট ফাইলের নাম ব্যবহার করুন
: 2019-4-12-7: 13: 12        // ক্যালেন্ডার ব্যবহার করুন


0
fun convertLongToTimeWithLocale(){
    val dateAsMilliSecond: Long = 1602709200000
    val date = Date(dateAsMilliSecond)
    val language = "en"
    val formattedDateAsDigitMonth = SimpleDateFormat("dd/MM/yyyy", Locale(language))
    val formattedDateAsShortMonth = SimpleDateFormat("dd MMM yyyy", Locale(language))
    val formattedDateAsLongMonth = SimpleDateFormat("dd MMMM yyyy", Locale(language))
    Log.d("month as digit", formattedDateAsDigitMonth.format(date))
    Log.d("month as short", formattedDateAsShortMonth.format(date))
    Log.d("month as long", formattedDateAsLongMonth.format(date))
}

আউটপুট:

month as digit: 15/10/2020
month as short: 15 Oct 2020 
month as long : 15 October 2020

আপনার প্রয়োজনীয়তার কারণে আপনি 'ভাষা' হিসাবে সংজ্ঞায়িত মান পরিবর্তন করতে পারেন। এখানে সমস্ত ভাষার কোড: জাভা ভাষার কোডগুলি


দীর্ঘ উত্সাহিত এবং কুখ্যাত সমস্যা SimpleDateFormatএবং বন্ধুদের দূরে ফেলে বিবেচনা করুন । যদি আপনি হয় ব্যবহার করতে পারেন দেখুন desugaring অথবা অ্যাড ThreeTenABP ব্যবহার java.time, আধুনিক জাভা তারিখ এবং সময় API- এ আপনার অ্যান্ড্রয়েড প্রকল্পে, যাতে। এটি কাজ করে এত সুন্দর।
ওলে ভিভি

-1

আপনি jia.util. তারিখটি মিলি সেকেন্ডে তৈরি করতে পারেন। এবং তারপরে এটি java.text.Date Format এর সাথে স্ট্রিংয়ে রূপান্তরিত করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.