অ্যান্ড্রয়েড বর্তমান টাইমস্ট্যাম্প পান?


247

আমি এর মতো বর্তমান টাইমস্ট্যাম্পটি পেতে চাই: 1320917972

int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts =  tsTemp.toString();

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

উত্তর:


298

সমাধানটি হ'ল:

Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();

এটি ডিভাইসের টাইমজোন অফসেটকে ফ্যাক্টর করে না।
kjdion84

1
@ kjdion84 আমাকে ক্ষমা করবেন, তবে কেন এটি গুরুত্বপূর্ণ হবে বলে আপনি মনে করেন? শুধু প্রশ্নের উপর ভিত্তি করে।
সি ԃ ԃ

82

বিকাশকারীদের ব্লগ থেকে:

System.currentTimeMillis()যুগের পর থেকে মিলি সেকেন্ড প্রকাশ করা মানক "প্রাচীর" ঘড়ি (সময় এবং তারিখ)। প্রাচীর ঘড়িটি ব্যবহারকারী বা ফোন নেটওয়ার্ক দ্বারা সেট করা যেতে পারে ( সেটকর্ন্টটাইমমিলিস (দীর্ঘ) দেখুন ), যাতে সময়টি পিছনে বা অপ্রত্যাশিতভাবে এগিয়ে যেতে পারে। এই ঘড়িটি কেবল তখন ব্যবহার করা উচিত যখন বাস্তব-বিশ্বের তারিখ এবং সময়গুলির সাথে চিঠিপত্র গুরুত্বপূর্ণ, যেমন কোনও ক্যালেন্ডারে বা অ্যালার্ম ক্লক অ্যাপ্লিকেশনটিতে। বিরতি বা অতিবাহিত সময়ের পরিমাপের জন্য আলাদা ঘড়ি ব্যবহার করা উচিত। আপনি ব্যবহার করে থাকেন System.currentTimeMillis(), শোনা বিবেচনা ACTION_TIME_TICK, ACTION_TIME_CHANGEDএবং ACTION_TIMEZONE_CHANGEDইন্টেন্ট সম্প্রচার খুঁজে বের করতে যখন সময় পরিবর্তন।


11
বিকাশকারী.অ্যান্ড্রয়েড. com/references/java/lang/… থেকে আমি দেখতে পেলাম যে এটির System.nanoTime()একটি বিকল্প System.currentTimeMillis()এবং এটির কোনও অনাকাঙ্ক্ষিত ওঠানামা নেই, এবং সময়কাল পার্থক্যগুলি পরিমাপের জন্য ডিজাইন করা হয়েছে।
বিয়ানকা ড্যানিসিক

2
@ ana01 "ডিভাইসটি শেষ বার যখনই শেষ হয় তখন শূন্যের মান হয়" - সুতরাং যখন আপনি একই ডিভাইসে সময়কাল পার্থক্য তুলনা করেন তখনই এটি ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ ডাটাবেস স্টোরেজের জন্য দরকারী নয়।
মিশা কে

1
@ Ana01 এর মন্তব্যে কেবল একটি নোট যা System.nanoTime()প্রাচীর ঘড়ির সময় প্রদর্শনের জন্য উপযুক্ত নয়। এই উদ্দেশ্যে, System.currentTimeMillis()পরিবর্তে ব্যবহার করুন।
আকাশ আগারওয়াল

33

1320917972 হ'ল ইউনিক্স টাইমস্ট্যাম্পটি 1 জানুয়ারী, 1970 টি ইউটিসি থেকে 00:00:00 ইউটিসি থেকে সেকেন্ডের সংখ্যা ব্যবহার করে TimeUnitunit আপনি ইউনিট রূপান্তরকরণের জন্য ক্লাস ব্যবহার করতে পারেন - System.currentTimeMillis()কয়েক সেকেন্ডে।

String timeStamp = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));

29

আপনি সরলডেটফর্ম্যাট ক্লাসটি ব্যবহার করতে পারেন :

SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());

22
এটি কোনও টাইমস্ট্যাম্প নয় (যুগের পর থেকে)
মিশা কে

1
কোনও টাইমস্ট্যাম্প নয় এবং তদুপরি, কোনও উপকরণই নয় (সিম্পলডেটফর্ম্যাট তৈরি, তারিখের সৃষ্টি, রূপান্তর)। এটা এড়ানোর.
সেনোরথ

আপনি অন্য কোনও উত্তর দিচ্ছেন, তবে এটি বৈধও।
ersks

24

বর্তমান সময়ের স্ট্যাম্প পেতে নীচের পদ্ধতিটি ব্যবহার করুন। এটা আমার জন্য ভালই কাজ করে।

/**
 * 
 * @return yyyy-MM-dd HH:mm:ss formate date as string
 */
public static String getCurrentTimeStamp(){
    try {

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String currentDateTime = dateFormat.format(new Date()); // Find todays date

        return currentDateTime;
    } catch (Exception e) {
        e.printStackTrace();

        return null;
    }
}

37
এটি কোনও টাইমস্ট্যাম্প নয়।

1
@ হিটস, এটি সিম্পল ডেট ফর্ম্যাট, টাইমস্ট্যাম্প নয়। আপনি কেবল কারেন্টটাইমস্ট্যাপ হিসাবে পরিবর্তনশীল নাম ব্যবহার করছেন।
ersks

12

এটি সহজ ব্যবহার:

long millis = new Date().getTime();

আপনি যদি এটি নির্দিষ্ট ফর্ম্যাটে চান তবে আপনার নীচের মতো ফর্ম্যাটর প্রয়োজন

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String millisInString  = dateFormat.format(new Date());

8

এখানে একটি মানব-পঠনযোগ্য টাইম স্ট্যাম্প যা কোনও ফাইলের নামে ব্যবহৃত হতে পারে, যদি কারও আমার প্রয়োজন মতো একই জিনিস প্রয়োজন হয়:

package com.example.xyz;

import android.text.format.Time;

/**
 * Clock utility.
 */
public class Clock {

    /**
     * Get current time in human-readable form.
     * @return current time as a string.
     */
    public static String getNow() {
        Time now = new Time();
        now.setToNow();
        String sTime = now.format("%Y_%m_%d %T");
        return sTime;
    }
    /**
     * Get current time in human-readable form without spaces and special characters.
     * The returned value may be used to compose a file name.
     * @return current time as a string.
     */
    public static String getTimeStamp() {
        Time now = new Time();
        now.setToNow();
        String sTime = now.format("%Y_%m_%d_%H_%M_%S");
        return sTime;
    }

}

1
আরে, আপনি কি টাইমস্ট্যাম্পগুলির একটি তালিকা বাছাই করার সর্বোত্তম উপায় বলতে পারেন? আমি সেগুলি নিজেই বাছাই করার কথা ভাবছিলাম তবে ভেবেছিলাম এর চেয়ে ভাল উপায় আর হতে পারে।
আব্বাস

যে কারও পড়ার জন্য ভবিষ্যতের রেফারেন্সের জন্য এটি সচেতন থাকুন যে "android.text.format.Time" এখন
অবহিত করা

5

এগুলি চেষ্টা করে দেখুন

time.setText(String.valueOf(System.currentTimeMillis()));

এবং টাইমস্ট্যাম্প থেকে টাইম ফর্ম্যাট

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(Long.parseLong(time.getText().toString())));
time.setText(dateString);

4

java.time

আমার আধুনিক উত্তরটি অবদান রাখতে পছন্দ করা উচিত।

    String ts = String.valueOf(Instant.now().getEpochSecond());
    System.out.println(ts);

এখনই চলমান অবস্থায় আউটপুট:

1543320466

যদিও 1000 দ্বারা বিভাজন অনেকের কাছে অবাক হওয়ার মতো নয়, আপনার নিজের সময় রূপান্তরগুলি করা খুব দ্রুত পড়তে অসুবিধা হতে পারে, তাই আপনি যখন এড়াতে পারেন তখন এটির অভ্যাসের অভ্যাসটি বদ অভ্যাস।

Instantবর্গ যে আমি ব্যবহার করছি java.time, আধুনিক জাভা তারিখ এবং সময় API- এর অংশ। এটি নতুন অ্যান্ড্রয়েড সংস্করণগুলি, এপিআই স্তরের 26 এবং তারপরে বিল্ট ইন। আপনি যদি পুরানো অ্যান্ড্রয়েডের জন্য প্রোগ্রামিং করেন তবে আপনি ব্যাকপোর্টটি পেতে পারেন, নীচে দেখুন। আপনি যদি তা করতে না চান, বোধগম্য, আমি এখনও একটি অন্তর্নির্মিত রূপান্তর ব্যবহার করব:

    String ts = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
    System.out.println(ts);

এটি সিলস্কেজের উত্তর হিসাবে একই। আউটপুট আগের মতোই।

প্রশ্ন: আমি অ্যান্ড্রয়েডে জাভা.টাইম ব্যবহার করতে পারি?

হ্যাঁ, জাভা.টাইম পুরানো এবং আরও নতুন অ্যান্ড্রয়েড ডিভাইসে দুর্দান্তভাবে কাজ করে। এটির জন্য কমপক্ষে জাভা 6 প্রয়োজন

  • জাভা 8 এবং তারপরে এবং আরও নতুন অ্যান্ড্রয়েড ডিভাইসগুলিতে (এপিআই স্তর 26 থেকে) আধুনিক এপিআই বিল্ট ইন হয়।
  • অ অ্যান্ড্রয়েড জাভা 6 এবং 7-এ থ্রিটেন ব্যাকপোর্ট, নতুন ক্লাসগুলির ব্যাকপোর্ট (জেএসআর 310 এর জন্য থ্রিডেন; নীচে লিঙ্কগুলি দেখুন) পান।
  • (পুরানো) অ্যান্ড্রয়েড থ্রিটেন ব্যাকপোর্টের অ্যান্ড্রয়েড সংস্করণ ব্যবহার করে। একে থ্রিটেনএবিপি বলে। এবং org.threeten.bpসাব-প্যাকেজগুলি সহ আপনি তারিখ এবং সময় ক্লাসগুলি আমদানি করেছেন তা নিশ্চিত করুন ।

লিংক


1
প্রায় নিখুঁত উত্তর (আমি উপবিষ্টিত) তবে, আমার অন্তত সৎ মতামত অনুসারে আপনার থ্রিটেন ব্যাকপোর্ট রেফারেন্সটি সরিয়ে নেওয়া উচিত কারণ এটি সাধারণভাবে জাভা নয়, অ্যান্ড্রয়েড সম্পর্কিত একটি প্রশ্ন। এবং এটি অ্যান্ড্রয়েডে নতুনদের জন্য বিভ্রান্ত হতে পারে।
স্লোবোডান আন্তোনিজেভিć

1
@ স্লোবোডানআন্টনিজিভিć অ্যান্ড্রয়েড প্রোগ্রামারদের বুঝতে এটি গুরুত্বপূর্ণ যে (ক) যদি তারা অ্যানড্রয়েড 26 সমর্থন করে এবং তার পরে, তাদের java.Time অন্তর্নির্মিত একটি প্রয়োগ রয়েছে , (খ) 26 এর আগে প্রারম্ভিক অ্যান্ড্রয়েড সমর্থন করে, তাদের অবশ্যই একটি লাইব্রেরি যুক্ত করতে হবে , থ্রিটেনএবিপি লাইব্রেরি, এবং (গ) থ্রিটেনএবিপি ব্যবহার করে জানুন যে এই লাইব্রেরিটি জাভা থেকে অ্যান্ড্রয়েডে অভিযোজিত থ্রিটেন-ব্যাকপোর্টের একটি অভিযোজন is ThreeTenABP গ্রন্থাগার শুধু কাছাকাছি একটি অ্যান্ড্রয়েড-ভিত্তিক মোড়কের হয় ThreeTen-গুলো পুরনো গ্রন্থাগার। 3 লাইব্রেরির তুলনায় এই টেবিলের গ্রাফিকটি দেখুন ।
তুলসী বাউরক

@ বাসিলবার্ক আপনি সম্পূর্ণ সঠিক তবে, আপনি আসলে থ্রিটেন-ব্যাকপোর্ট আমদানি করতে পারেন এবং এটি একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে ব্যবহার করতে পারেন, তবে এর জেআর নির্ভরতার কারণে পারফরম্যান্সের কারণে চূড়ান্ত প্রভাব ফেলতে পারেন। এ কারণেই আমি বলেছি যে পোস্টটি আরও সুনির্দিষ্ট হওয়া উচিত যে অ্যান্ড্রয়েড ডেভগুলি কখনই থ্রিটেন-ব্যাকপোর্ট ব্যবহার করা উচিত নয় এবং পরিবর্তে এপিআই 25 এবং নীচের সমর্থনের জন্য থ্রিটেনএবপি ব্যবহার করা উচিত। আমি বিভিন্ন বোর্ডে অসংখ্য ডেভ দেখেছি যা বিভ্রান্ত হয়ে পড়ে যেগুলির জন্য অ্যান্ড্রয়েডের জন্য কোনওটি ব্যবহার করা উচিত, কারণ তারা নাম অনুসারে একই শব্দ করে।
স্লোবোডান আন্তোনিজেভিć

ভাল পয়েন্ট, @ স্লোবোডানআন্টনিজেভিe ć আমি এটিকে আরও একটু পরিষ্কার করার চেষ্টা করেছি।
ওলে ভিভি

1
@ স্লোবোডানআন্টনিজিভি ć জাভা এবং অ্যান্ড্রয়েড উভয়ের জন্য কোথায় জাভা.টাইম পাওয়া যায় তা এই টেবিলটি এটি পরিষ্কার করে দিতে সহায়তা করতে পারে।
তুলসী বাউরক

3

কোটলিনে সমাধান:

val nowInEpoch = Instant.now().epochSecond

আপনার ন্যূনতম এসডিকে সংস্করণটি 26 টি নিশ্চিত করুন।


0

আমি হিটসের উত্তরটি ব্যবহার করার পরামর্শ দিচ্ছি, তবে একটি লোকেল ফর্ম্যাট যুক্ত করে অ্যান্ড্রয়েড বিকাশকারীরা এভাবে পরামর্শ দেয় :

try {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
        return dateFormat.format(new Date()); // Find todays date
    } catch (Exception e) {
        e.printStackTrace();

        return null;
    }

0

এই কোডটি কোটলিন সংস্করণ। বৈকল্পিক যুগের সময় দেওয়ার জন্য আমার শেষ অঙ্কে একটি এলোমেলো শ্যাফেল পূর্ণসংখ্যার যোগ করার জন্য আমার আরেকটি ধারণা রয়েছে।

কোটলিন সংস্করণ

val randomVariance = (0..100).shuffled().first()
val currentEpoch = (System.currentTimeMilis()/1000) + randomVariance

val deltaEpoch = oldEpoch - currentEpoch

আমি মনে করি এই কোডটি ব্যবহার করা আরও ভাল হবে তবে অ্যান্ড্রয়েড সংস্করণ 26 বা তার বেশি নির্ভর করে

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