java - জাভাতে yyyy-MM-dd ফর্ম্যাটের ক্যালেন্ডার তারিখ




date calendar converter (9)

কিভাবে ক্যালেন্ডার তারিখ yyyy-MM-dd ফর্ম্যাট রূপান্তর করতে।

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();             
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
String date1 = format1.format(date);            
Date inActiveDate = null;
try {
    inActiveDate = format1.parse(date1);
} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

এটি inActiveDate = Wed Sep 26 00:00:00 IST 2012 তৈরি করবে। কিন্তু আমার প্রয়োজন 2012-09-26 । আমার উদ্দেশ্য এই তারিখটি আমার ডেবিবেলে হাইবারনেট মানদণ্ড ব্যবহার করে অন্য তারিখের সাথে তুলনা করা। তাই আমি yyyy-MM-dd বিন্যাসে তারিখের বস্তুর প্রয়োজন।


Answers

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 7);
Date date = c.getTime();
SimpleDateFormat ft = new SimpleDateFormat("MM-dd-YYYY");
JOptionPane.showMessageDialog(null, ft.format(date));

এটি আপনার তারিখ + 7 দিন মাস, দিন এবং বছরের বিন্যাসে একটি জপ্পন উইন্ডো ফলক প্রদর্শন করবে।


আপনার কোড ভুল। তারিখ পার্সিং কোন বিন্দু এবং তারিখ বস্তুর হিসাবে রাখা।

আপনি যখন প্রদর্শন করতে চান তখন ক্যালেন্ডার তারিখের বস্তুর বিন্যাস করতে পারেন এবং স্ট্রিং হিসাবে রাখতে পারেন।

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
Date date = cal.getTime();             
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");          
String inActiveDate = null;
try {
    inActiveDate = format1.format(date);
    System.out.println(inActiveDate );
} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

public static void main(String[] args) {
    Calendar cal = Calendar.getInstance();
    cal.set(year, month, date);
    SimpleDateFormat format1 = new SimpleDateFormat("yyyy MM dd");
    String formatted = format1.format(cal.getTime());
    System.out.println(formatted);
}

java.util.Date অবজেক্টটি আপনার পছন্দসই বিন্যাসে তারিখ উপস্থাপিত করতে পারে না, SimpleDateFormat.format আপনাকে string ফেরত দেওয়া SimpleDateFormat.format পদ্ধতিটি ব্যবহার করতে হবে।

String myString=format1.format(date);

একটি জাভা Date 1 জানুয়ারী, 1970, 00:00:00 GMT থেকে মিলিসেকেন্ডের সংখ্যার জন্য একটি ধারক।

যখন আপনি System.out.println(date) মতো কিছু ব্যবহার করেন, তখন জাভা বিষয়বস্তু মুদ্রণ করতে Date.toString() ব্যবহার করে।

এটি পরিবর্তন করার একমাত্র উপায় Date ওভাররাইড করা এবং Date Date.toString() এর নিজস্ব বাস্তবায়ন প্রদান করা। এখন আপনি আপনার আইডিই জ্বালিয়ে দেওয়ার আগে এটি চেষ্টা করুন, আমি চাই না; এটা শুধুমাত্র বিষয় জটিল হবে। আপনি যে ফর্ম্যাটটি (বা প্রদর্শন) ব্যবহার করতে চান সেটির তারিখটি ফর্ম্যাট করা বন্ধ করুন।

জাভা 8+

LocalDateTime ldt = LocalDateTime.now().plusDays(1);
DateTimeFormatter formmat1 = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH);
System.out.println(ldt);
// Output "2018-05-12T17:21:53.658"

String formatter = formmat1.format(ldt);
System.out.println(formatter);
// 2018-05-12

জাভা আগে 8

আপনি থ্রিটেন ব্যাকপোর্ট ব্যবহার করা উচিত

নিম্নলিখিত ঐতিহাসিক উদ্দেশ্যে (মূল উত্তর হিসাবে) জন্য রক্ষণাবেক্ষণ করা হয়

আপনি কি করতে পারেন, তারিখ বিন্যাস করা হয়।

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, 1);
SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(cal.getTime());
// Output "Wed Sep 26 14:23:28 EST 2012"

String formatted = format1.format(cal.getTime());
System.out.println(formatted);
// Output "2012-09-26"

System.out.println(format1.parse(formatted));
// Output "Wed Sep 26 00:00:00 EST 2012"

এই আসলে একই তারিখ, ভিন্নভাবে প্রতিনিধিত্ব করা হয়।


java.time

ম্যাড প্রোগ্রামার দ্বারা উত্তর সঠিক, বিশেষ করে Joda-Time সম্পর্কে টিপ। জোদা-টাইমের উত্তরাধিকারী এখন জাভা 8 এ নতুন java.time প্যাকেজ হিসাবে তৈরি করা হয়েছে। এখানে জাভা 8 উদাহরণ কোড।

তারিখ-সময় (স্থানীয় তারিখের বিপরীতে) সাথে কাজ করার সময় , সমালোচনামূলক সময় অঞ্চল । দিনের-দিন সময় অঞ্চল উপর নির্ভর করে। উদাহরণস্বরূপ, ভারত সময় অঞ্চল +05:30 (ইউটিসি থেকে সাড়ে সাড়ে পাঁচ ঘন্টা আগে), যখন France মাত্র এক ঘন্টা এগিয়ে। তাই ভারতে একটি নতুন দিনে একটি মুহূর্তের একটি তারিখ আছে, যখন ফ্রান্সের একই মুহূর্তে "গতকালের" তারিখ রয়েছে। কোন সময় অঞ্চল বা অফসেট তথ্য অভাব স্ট্রিং আউটপুট তৈরি করা হয় অস্পষ্টতা তৈরি করা হয়। আপনি YYYY-MM-DD আউটপুটটির জন্য অনুরোধ করেছেন তাই আমি সরবরাহ করেছি, তবে আমি এটি সুপারিশ করি না। ISO_LOCAL_DATE পরিবর্তে আমি এই আউটপুটটি পেতে ISO_DATE ব্যবহার ISO_DATE : 2014-02-25+05:30

ZoneId zoneId = ZoneId.of( "Asia/Kolkata" );
ZonedDateTime zonedDateTime = ZonedDateTime.now( zoneId );

DateTimeFormatter formatterOutput = DateTimeFormatter.ISO_LOCAL_DATE; // Caution: The "LOCAL" part means we are losing time zone information, creating ambiguity.
String output = formatterOutput.format( zonedDateTime );

কনসোল করতে ডাম্প ...

System.out.println( "zonedDateTime: " + zonedDateTime );
System.out.println( "output: " + output );

যখন রান ...

zonedDateTime: 2014-02-25T14:22:20.919+05:30[Asia/Kolkata]
output: 2014-02-25

Joda-টাইম

Joda-Time লাইব্রেরি ব্যবহার করে একই কোড, java.time এর অগ্রদূত।

DateTimeZone zone = new DateTimeZone( "Asia/Kolkata" );
DateTime dateTime = DateTime.now( zone );
DateTimeFormatter formatter = ISODateTimeFormat.date();
String output = formatter.print( dateTime );

আইএসও 8601

যাইহোক, আপনার ইনপুট স্ট্রিংটির যে ফর্ম্যাটটি একটি স্ট্যান্ডার্ড বিন্যাস, ISO 8601 দ্বারা সংজ্ঞায়িত বেশ কয়েকটি কার্যকর তারিখ-সময় স্ট্রিং ফর্ম্যাটগুলির মধ্যে একটি।

বিভিন্ন তারিখ-সময় মানগুলির স্ট্রিং উপস্থাপনাগুলি পার্সিং এবং জেনারেট করার সময় জোদা-টাইম এবং java.time উভয় ডিফল্টরূপে ISO 8601 ফর্ম্যাটগুলি ব্যবহার করে।


java.util.Date বস্তুর বিশ্লেষণ করার জন্য আপনাকে প্রথমে নিজের ফর্ম্যাট ব্যবহার করে স্ট্রিং এ রূপান্তর করতে হবে।

inActiveDate = format1.parse(  format1.format(date)  );

কিন্তু আমি বিশ্বাস করি আপনি এখানে অনাবশ্যক।


public static String ThisWeekStartDate(WebDriver driver) {
        Calendar c = Calendar.getInstance();
        //ensure the method works within current month
        c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        System.out.println("Before Start Date " + c.getTime());
        Date date = c.getTime();

          SimpleDateFormat dfDate = new SimpleDateFormat("dd MMM yyyy hh.mm a");

          String CurrentDate = dfDate.format(date);
          System.out.println("Start Date " + CurrentDate);
          return CurrentDate;

    }
    public static String ThisWeekEndDate(WebDriver driver) {

        Calendar c = Calendar.getInstance();
        //ensure the method works within current month
        c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
        System.out.println("Before End Date " + c.getTime());
        Date date = c.getTime();

          SimpleDateFormat dfDate = new SimpleDateFormat("dd MMM yyyy hh.mm a");

          String CurrentDate = dfDate.format(date);
          System.out.println("End Date " + CurrentDate);
          return CurrentDate;
    }

ArrayListএবং LinkedListউভয় প্রয়োগ List interfaceএবং তাদের পদ্ধতি এবং ফলাফল প্রায় অভিন্ন। তবে প্রয়োজনীয়তার উপর নির্ভর করে অন্যের উপর আরও ভাল করে তাদের মধ্যে কয়েকটি পার্থক্য রয়েছে।

ArrayList ভি লিঙ্কডলিস্ট

1) Search: ArrayListঅনুসন্ধান অপারেশন অনুসন্ধান অপারেশন তুলনায় বেশ দ্রুত LinkedListget(int index)মধ্যে ArrayListকর্মক্ষমতা দেয় O(1)যখন LinkedListহয় কর্মক্ষমতা O(n)

Reason: ArrayListসূচী ভিত্তিক সিস্টেমটিকে তার উপাদানগুলির জন্য বজায় রাখে কারণ এটি অ্যারে তথ্য গঠনকে ব্যবহার করে যা এটি তালিকায় একটি উপাদান অনুসন্ধানের জন্য দ্রুততর করে তোলে। অন্য দিকে LinkedListদ্বিগুণ লিঙ্কযুক্ত তালিকা প্রয়োগ করে যা একটি উপাদান অনুসন্ধানের জন্য সমস্ত উপাদানগুলির মাধ্যমে ট্রাভেরসাল প্রয়োজন।

2) Deletion: LinkedListঅপসারণ অপারেশন দেয় O(1)যখন ArrayListপরিবর্তনশীল কর্মক্ষমতা দেয়: O(n)সবচেয়ে খারাপ ক্ষেত্রে (প্রথম উপাদান অপসারণের সময়) এবং O(1)ভাল ক্ষেত্রে (শেষ উপাদান অপসারণের সময়)।

উপসংহার: LinkedList উপাদান মুছে ফেলার দ্রুত ArrayList তুলনায় দ্রুত।

কারণ: লিঙ্কেডলিস্টের প্রতিটি উপাদান দুটি পয়েন্টার (ঠিকানা) বজায় রাখে যা তালিকাতে উভয় প্রতিবেশী উপাদানকে নির্দেশ করে। অতএব অপসারণের শুধুমাত্র নোডের দুটি প্রতিবেশী নোড (উপাদানের) মধ্যে পয়েন্টার অবস্থান পরিবর্তন প্রয়োজন যা অপসারণ করা যাচ্ছে। যখন ArrayList এ সমস্ত উপাদান সরানো উপাদান দ্বারা তৈরি স্থান পূরণ করতে স্থানান্তর করা প্রয়োজন।

3) সবচেয়ে খারাপ ক্ষেত্রে দেয় যখন Inserts Performance: LinkedListপদ্ধতি যোগ O(1)কর্মক্ষমতা ArrayListদেয় O(n)। কারণ মুছে ফেলার জন্য ব্যাখ্যা হিসাবে একই।

4) প্রতিবেশী নোডের জন্য উপাদান তথ্য এবং দুটি পয়েন্টার বজায় রাখার Memory Overhead: ArrayListসময় সূচী এবং উপাদান তথ্য LinkedListবজায় রাখে

সুতরাং তুলনামূলকভাবে LinkedList মধ্যে মেমরি খরচ উচ্চ।

নিম্নরূপ এই ক্লাসগুলির মধ্যে কয়েকটি মিল রয়েছে:

  • অ্যারেস্টিস্ট এবং লিঙ্কডলিস্ট উভয় তালিকা ইন্টারফেস বাস্তবায়ন হয়।
  • তারা উভয় উপাদান সন্নিবেশ ক্রম বজায় রাখে যার মানে হল অ্যারেস্টিস্ট এবং লিঙ্কডলিস্ট উপাদানগুলি প্রদর্শন করার সময় ফলাফল সেটটি একই ক্রম থাকবে যার মধ্যে তালিকা তালিকাতে ঢোকানো হয়েছে।
  • এই উভয় ক্লাসগুলি অ-সিঙ্ক্রোনাইজড এবং সংগ্রহগুলি.SynchronizedList পদ্ধতি ব্যবহার করে স্পষ্টভাবে সিঙ্ক্রোনাইজ করা যেতে পারে।
  • iteratorএবং listIteratorএই শ্রেণীর দ্বারা ফিরে হয় fail-fast(যদি তালিকা গঠনের দিক ছাড়া যে কোনো সময় রুপান্তরিত করা হয়েছে কোন ভাবেই পর পুনরুক্তিকারীর তৈরি করা হয় iterator'sনিজের অপসারণ বা পদ্ধতি যোগ করুন, পুনরুক্তিকারীর হবে throwএকটি ConcurrentModificationException)।

কখন লিঙ্কডলিস্ট ব্যবহার করবেন এবং কখন অ্যারেস্টিস্ট ব্যবহার করবেন?

  • সন্নিবেশ উপরে বর্ণিত এবং অপসারণ হিসাবে অপারেশন ভাল পারফরম্যান্স দিতে (O(1))মধ্যে LinkedListতুলনায় ArrayList(O(n))

    তাই যদি অ্যাপ্লিকেশনটিতে ঘন ঘন যোগ এবং মুছে ফেলার প্রয়োজন হয় তবে লিঙ্কডলিস্ট একটি সর্বোত্তম পছন্দ।

  • অনুসন্ধান ( get method) অপারেশন দ্রুত Arraylist (O(1))কিন্তু নাLinkedList (O(n))

    তাই যদি কম যোগ এবং অপারেশন এবং আরো অনুসন্ধান অপারেশন প্রয়োজনীয়তা অপসারণ করা হয়, ArrayList আপনার সেরা বাজি হবে।





java date calendar converter