YYYY-MM-DD HH: MI: Sec.Millisecond in জাভাতে কীভাবে বর্তমান সময় পাবেন?


641

নীচের কোডটি আমাকে বর্তমান সময় দেয়। তবে এটি মিলিসেকেন্ড সম্পর্কে কিছু বলে না।

public static String getCurrentTimeStamp() {
    SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//dd/MM/yyyy
    Date now = new Date();
    String strDate = sdfDate.format(now);
    return strDate;
}

আমি বিন্যাসে তারিখ পেতে 2009-09-22 16:47:08 (: এমআই: SEC হল YYYY-MM-DD HH:)

তবে আমি বর্তমান সময়ের ফর্ম্যাটটিতে 2009-09-22 16:47:08.128(YYYY-MM-DD HH: MI: Sec.Ms) পুনরুদ্ধার করতে চাই - যেখানে 128 মিলিসেকেন্ডকে বলে।

SimpleTextFormatভাল কাজ করবে। এখানে সময়ের সর্বনিম্ন ইউনিটটি দ্বিতীয়, তবে আমি কীভাবে মিলিসেকেন্ড পাব?


32
অন্য সব ব্যর্থ হলে ডকুমেন্টেশন পড়ুন
হট লিকস

4
অবগতির জন্য, যেমন বিরক্তিজনক পুরাতন তারিখ-সময় শ্রেণীর java.util.Date, java.util.Calendarএবং java.text.SimpleTextFormatএখন উত্তরাধিকার দ্বারা supplanted java.time ক্লাস। ওরাকল দ্বারা টিউটোরিয়াল দেখুন ।
বাসিল বাউরেক

উত্তর:


1003
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

কৌতূহলের বাইরে, সিম্পলডিটফর্ম্যাট ব্যবহার করে কী সুবিধা পাবেন: ডেটটাইম.টোস্ট্রিং ("ইয়াই-এমএম-ডিডি এইচ: মিমি: এসএসএসএস")?
নিকজি

10
@ নিকজি এই toString(String format)পদ্ধতিটি কোথায় ? java.util.Dateএটা আছে মনে হচ্ছে না। আপনি জোদা টাইম এপিআই উল্লেখ করছেন? তবে একটি সম্ভাব্য সুবিধা হ'ল একই ফরম্যাটার অবজেক্টটির পুনরায় ব্যবহার। আর একটি হ'ল আপনাকে কোনও এপিআই যুক্ত করতে হবে না - তারিখ শ্রেণি একটি স্ট্যান্ডার্ড জাভা লাইব্রেরি ক্লাস।
এডিটিসি

22
জাভা 8 তে আপনি একই উদ্দেশ্যে ডেটটাইমফর্ম্যাটর ব্যবহার করতে পারেন ।
ভিটালিই ফেদোরেনকো

7
সিম্পলডিটফর্ম্যাটটি থ্রেড নিরাপদ নয়, তবে নতুন ডেটটাইম ফর্ম্যাটরটি থ্রেড নিরাপদ।
দেবদানকে

15
জাভা 8 LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"))
ডেটটাইম

202

একটি জাভা ওয়ান লাইনার

public String getCurrentTimeStamp() {
    return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date());
}

জেডিকে 8 স্টাইলে

public String getCurrentLocalDateTimeStamp() {
    return LocalDateTime.now()
       .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
}

9
লোকালডেটটাইম এবং ডেটটাইম ফর্ম্যাটর থিম-সেফ সিম্পলডেট
ফরমেটের

@ ম্যাক্স্পল এমন কোনও ক্ষেত্রে যেখানে সিম্পলডেট ফরমেট সমস্যা সৃষ্টি করে?
গৌরব

1
@ গৌরভ এখানে আপনার কুকি রয়েছে: Callicoder.com/java-simpledateformat-thread-s Safeety
issues

102

আপনার তারিখ বিন্যাসের স্ট্রিংয়ে আপনাকে কেবল মিলিসেকেন্ড ক্ষেত্রটি যুক্ত করতে হবে:

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

SimpleDateFormat এর এপিআই ডক বিস্তারিতভাবে ফরম্যাট স্ট্রিং বর্ণনা করা হয়েছে।



30

TL; ড

Instant.now()
       .toString()

2016-05-06T23: 24: 25.694Z

ZonedDateTime
.now
( 
    ZoneId.of( "America/Montreal" ) 
)
.format(  DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " )

2016-05-06 19: 24: 25.694

java.time

জাভা 8 এবং তার পরে, আমাদের জাভা 8 টাইপ কাঠামোটি জাভা 8 এবং তার পরে তৈরি হয়েছে। এই নতুন ক্লাসগুলি কষ্টকর পুরানো java.util.Date/.C ক্যালেন্ডার ক্লাসগুলিকে সহায়তা করে। নতুন ক্লাসগুলি অত্যন্ত সফল জোডা-টাইম কাঠামোর দ্বারা অনুপ্রাণিত হয়েছে , এর উত্তরসূরি হিসাবে ধারণা করা হয়েছে, ধারণার অনুরূপ তবে পুনরায় আর্কিটেটেড। জেএসআর 310 দ্বারা সংজ্ঞায়িত । থ্রিটেন-এক্সট্রা প্রকল্প দ্বারা প্রসারিত । টিউটোরিয়াল দেখুন ।

সচেতন থাকুন যে জাভা.টাইম ন্যানোসেকেন্ড রেজোলিউশনে (দ্বিতীয় দশমিক 9 দশমিক স্থান) সক্ষম, বনাম মিলিসেকেন্ড রেজোলিউশন (3 দশমিক স্থান) উভয় জাভা.উটিল.ডেট এবং জোদা-সময় উভয় ক্ষেত্রে সক্ষম। সুতরাং মাত্র 3 দশমিক স্থান প্রদর্শন করার জন্য ফর্ম্যাট করার সময় আপনি ডেটা লুকিয়ে রাখতে পারেন।

আপনি যদি আপনার ডেটা থেকে কোনও মাইক্রোসেকেন্ড বা ন্যানোসেকেন্ডগুলি মুছে ফেলতে চান তবে ছেঁটে ফেলুন।

Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;

জাভা.টাইম ক্লাসগুলি স্ট্রিং পার্সিং / উত্পন্ন করার সময় ডিফল্টরূপে আইএসও 8601 ফর্ম্যাট ব্যবহার করে। এ Zশেষে একটি সংক্ষিপ্ত Zuluএবং এর অর্থ ইউটিসি

একটি Instantআপ এর রেজোলিউশনে UTC- এ টাইমলাইনে একটি মুহূর্ত প্রতিনিধিত্ব করে ন্যানোসেকেন্ডবর্তমান মুহূর্ত ক্যাপচার জাভা 8 সীমাবদ্ধ মিলিসেকেন্ড , জাভা 9 একটি নতুন বাস্তবায়ন আপনার কম্পিউটারের হার্ডওয়্যার ঘড়ি ক্ষমতার উপর নির্ভর করে ন্যানোসেকেন্ড পর্যন্ত আটক করে।

Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();

2016-05-06T23: 24: 25.694Z

আপনার কাঙ্ক্ষিত আউটপুট পেতে Tমাঝখানে একটি স্থান এবং Zকিছুই সহ কিছুই প্রতিস্থাপন করুন ।

String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.

2016-05-06 23: 24: 25.694

আপনি অফসেট বা সময় অঞ্চল অন্তর্ভুক্ত করার বিষয়ে যত্নশীল না হওয়ায় কোনও "স্থানীয়" তারিখ-সময়কে কোনও নির্দিষ্ট অঞ্চলের সাথে সম্পর্কিত নয় re

String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );

Joda-টাইম

অত্যন্ত সফল জোডা-টাইম লাইব্রেরিটি ছিল জাভা.টাইম কাঠামোর অনুপ্রেরণা। সুবিধাজনক হলে জাভা.টাইমে স্থানান্তরিত করার পরামর্শ দেওয়া হয়।

আইএসও 8601 বিন্যাস মিলিসেকেন্ড, এবং এর জন্য ডিফল্ট, Joda-টাইম 2.4 গ্রন্থাগার।

System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );

যখন চালানো…

Now: 2013-11-26T20:25:12.014Z

এছাড়াও, আপনি প্রয়োজন হিসাবে এক নম্বর হিসাবে মিলি সেকেন্ড ভগ্নাংশের জন্য জিজ্ঞাসা করতে পারেন:

int millisOfSecond = myDateTime.getMillisOfSecond ();

9

সবচেয়ে সহজ উপায় ছিল (জাভা 8 এর আগে) ব্যবহার করা,

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

তবে সিম্পলডেট ফরমেট থ্রেড-সেফ নয়। আমরাও java.util.Date । এটি ব্যবহারকারীদের পক্ষে সম্ভাব্য সম্মতি সংক্রান্ত সমস্যার দিকে পরিচালিত করবে। এবং বিদ্যমান বিদ্যমান ডিজাইনে অনেক সমস্যা রয়েছে। জাভা 8 এ এখনই কাটিয়ে উঠতে আমাদের কাছে জাভা.টাইম নামে একটি পৃথক প্যাকেজ রয়েছে । এই জাভা এসই 8 তারিখ এবং সময় নথির এটি সম্পর্কে একটি ভাল ওভারভিউ রয়েছে।

সুতরাং জাভা 8-তে নীচের মতো কিছু কৌশল চালিয়ে যাবে (বর্তমান তারিখ / সময় ফর্ম্যাট করতে),

LocalDateTime.now()
   .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));

এবং একটি বিষয় লক্ষণীয় তা হ'ল এটি জনপ্রিয় তৃতীয় পক্ষের লাইব্রেরি জোদা-সময়ের সহায়তায় তৈরি করা হয়েছিল ,

প্রকল্পটি জেএসআর 310 এর অধীনে জোডা-টাইম (স্টিফেন কোলবর্ন) এবং ওরাকল এর যৌথ উদ্যোগে পরিচালিত হয়েছে এবং নতুন জাভা এসই 8 প্যাকেজ জাভা.টাইমে হাজির হবে।

তবে এখন joda-timeএটিকে অবমূল্যায়ন করা হচ্ছে এবং ব্যবহারকারীদের নতুনতে মাইগ্রেট করতে বলেছেন java.time

নোট করুন যে জাভা এসই 8 এর পর থেকে, ব্যবহারকারীদের জাভা.টাইমে (জেএসআর -310) স্থানান্তরিত করতে বলা হয় - জেডিকের একটি মূল অংশ যা এই প্রকল্পটিকে প্রতিস্থাপন করে

যাইহোক যে বলেন যে,

আপনার যদি কোনও ক্যালেন্ডার উদাহরণ থাকে তবে আপনি এটিকে নতুনতে রূপান্তর করতে নীচে ব্যবহার করতে পারেন java.time,

    Calendar calendar = Calendar.getInstance();
    long longValue = calendar.getTimeInMillis();         

    LocalDateTime date =
            LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneId.systemDefault());
    String formattedString = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));

    System.out.println(date.toString()); // 2018-03-06T15:56:53.634
    System.out.println(formattedString); // 2018-03-06 15:56:53.634

আপনার যদি একটি তারিখ অবজেক্ট থাকে,

    Date date = new Date();
    long longValue2 = date.getTime();

    LocalDateTime dateTime =
            LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue2), ZoneId.systemDefault());
    String formattedString = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));

    System.out.println(dateTime.toString()); // 2018-03-06T15:59:30.278
    System.out.println(formattedString);     // 2018-03-06 15:59:30.278

আপনার যদি সবেমাত্র যুগের মিলিসেকেন্ড থাকে,

LocalDateTime date =
        LocalDateTime.ofInstant(Instant.ofEpochMilli(epochLongValue), ZoneId.systemDefault());

সর্বনিম্ন এপিআই স্তরটি 26
AbayayMe


4

উপরের উত্তরগুলির পরিপূরক হিসাবে, এখানে এমন একটি প্রোগ্রামের একটি ছোট্ট কাজের উদাহরণ যা মিলিসেকেন্ড সহ বর্তমান সময় এবং তারিখটি মুদ্রণ করে।

import java.text.SimpleDateFormat;
import java.util.Date;

public class test {
    public static void main(String argv[]){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        Date now = new Date();
        String strDate = sdf.format(now);
        System.out.println(strDate);
    }
}


2

নির্দিষ্ট সময়ের মধ্যে আপনার বর্তমান সময় পেতে এটি ব্যবহার করুন :

 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 System.out.print(dateFormat.format(System.currentTimeMillis()));  }

অবগতির জন্য, যেমন ভয়ঙ্কর বিরক্তিজনক পুরাতন তারিখ-সময় শ্রেণীর java.util.Date, java.util.Calendarএবং java.text.SimpleDateFormatএখন উত্তরাধিকার দ্বারা supplanted java.time জাভা 8 এবং পরে পাতাটা ক্লাস। ওরাকল দ্বারা টিউটোরিয়াল দেখুন ।
বেসিল বোর্কে

আসলে আমি এই সমাধানটি অ্যান্ড্রয়েড অ্যাপের জন্য ব্যবহার করেছিলাম, তবে অ্যান্ড্রয়েডে জাভা.টাইম ক্লাস ব্যবহার করতে আমাদের কমপক্ষে ২ 27 এপিআই সেট থাকা দরকার Any তথাপি তথ্য ভাগ করে নেওয়ার জন্য ধন্যবাদ।
অভিষেক সেনগুপ্ত

কার্যত একই API এর সাথে থ্রিটেন-ব্যাকপোর্ট প্রকল্পে জাভা.টাইম কার্যকারিতার প্রায় সমস্তটি জাভা 6 এবং 7 এ ব্যাকপোর্ট করা হয়থ্রিটেনএবিপি প্রকল্পে অ্যান্ড্রয়েড <26 এর সাথে আরও অভিযোজিত । সুতরাং সেই রক্তাক্ত ভয়ঙ্কর পুরানো তারিখ-কাল ক্লাসগুলিকে আর স্পর্শ করার কোনও কারণ নেই।
বেসিল বোর্কে

2

মিলিসেকেন্ডের সাথে তারিখ এবং সময় প্রদর্শনের জন্য আমার এখানে একটি সাধারণ উদাহরণ রয়েছে ......

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class MyClass{

    public static void main(String[]args){
        LocalDateTime myObj = LocalDateTime.now();
        DateTimeFormatter myFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS);
        String forDate = myObj.format(myFormat);
        System.out.println("The Date and Time are: " + forDate);
    }
}

দেখতে দেখতে সুন্দর লাগছে, তবে কি এইটা দিয়ে অন্তর্দৃষ্টি যুক্ত করে, বলুন, রিনসিনার 5 বছর বয়সী মন্তব্য ?
গ্রেইবার্ড




0

java.text (জাভা 8 এর পূর্বে)

public static ThreadLocal<DateFormat> dateFormat = new ThreadLocal<DateFormat>() {
    protected DateFormat initialValue() {
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    };
};

...
dateFormat.get().format(new Date());

java.time

public static DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");

...
dateTimeFormatter.format(LocalDateTime.now());

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