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


210

কীভাবে ক্যালেন্ডারের তারিখটিকে 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ফর্ম্যাটে তারিখ অবজেক্ট প্রয়োজন ।


5
আপনি কোড বিভ্রান্তিকর হয়। আপনি কি কোনও স্ট্রিংকে একটি মান থেকে ফর্ম্যাট Dateকরার yyyy-MM-ddবা পার্স করার চেষ্টা করছেন ?? তারিখটি ফর্ম্যাট করতে, সহজেই এটি ব্যবহার করার জন্য , এটি পার্স করতে ব্যবহার করুনyyyy-MM-ddDateformat1.format(date)format1.parse(someStringValueInTheCorrectFormat)
ম্যাডপ্রোগ্রামার

আমি আমার প্রশ্নটি সম্পাদনা করেছি .. আগের ভুলের জন্য দুঃখিত ..
সারিকা.এস

9
একটি লাইনার:( new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSSXXX" ) ).format( Calendar.getInstance().getTime() );
ইভান আউচাম্প

উত্তর:


342

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

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

এটিকে পরিবর্তন করার একমাত্র উপায় হ'ল ওভাররাইড 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 এর আগে

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

নিম্নলিখিতটি historicalতিহাসিক উদ্দেশ্যে (মূল উত্তর হিসাবে) রক্ষণাবেক্ষণ করা হচ্ছে

আপনি যা করতে পারেন তা হল তারিখের ফর্ম্যাট।

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"

এগুলি আসলে একই তারিখ, ভিন্নভাবে উপস্থাপন করা।


1
ধরনের, তবে এটি দিয়ে আরও সহজCalendar
ম্যাডপ্রোগ্রামার

1
যাইহোক এই ক্যালেন্ডার অবজেক্ট থেকে টাইমজোনকে পুরোপুরি সরাতে হবে?
সারিকা.এস

2
আপনি যদি তারিখ / সময় ম্যানিপুলেশন সম্পর্কে সত্যই গুরুতর হন, জোডা টাইমের দিকে একবার নজর দিন , এটির সাথে Calendar
জগাখিচুড়ি করা

2
@ n13 যদি প্রশ্নটি ডাটাবেস তারিখের হেরফের বা এমনকি সময় ম্যানিপুলেশন সম্পর্কে ছিল তবে আমি আপনার সাথে একমত হতে পারি। প্রশ্নটি ছিল কীভাবে নির্দিষ্ট তারিখের ফর্ম্যাটে কোনও তারিখের মান উপস্থাপন করা যায়
ম্যাডপ্রোগ্রামার

1
সুন্দর কাঠামোগত উত্তর - এটি মূলত মডেল (তারিখ) -ভিউ (ফর্ম্যাট) বিচ্ছেদ।
YoYo

19

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

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

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

13

java.time

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

তারিখ-সময় (স্থানীয় তারিখের বিপরীতে) নিয়ে কাজ করার সময় সময় অঞ্চলটি সমালোচনামূলক। মাসের দিনটি সময় অঞ্চলের উপর নির্ভর করে। উদাহরণস্বরূপ, ভারত সময় অঞ্চল হল +05:30, যখন (সাড়ে পাঁচ ঘণ্টা এগিয়ে ইউটিসি এর) ফ্রান্স শুধুমাত্র এক ঘন্টার দূরে রয়েছে। সুতরাং ভারতে নতুন দিনের একটি মুহুর্তের একটি তারিখ রয়েছে এবং ফ্রান্সের একই মুহুর্তটির "গতকালের" তারিখ রয়েছে। যে কোনও সময় অঞ্চল বা অফসেটের অভাবের স্ট্রিং আউটপুট তৈরি করা অস্পষ্টতা তৈরি করছে creating আপনি YYYY-MM-DD আউটপুট চেয়েছিলেন যাতে আমি সরবরাহ করেছি, তবে আমি এটি প্রস্তাব করি না। পরিবর্তে ISO_LOCAL_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-টাইম

জোদা-টাইম লাইব্রেরি, জাভা.টাইমের পূর্বসূরীর ব্যবহার করে অনুরূপ কোড ।

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

আইএসও 8601

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

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


6

java.util.Dateবস্তুর উপস্থাপন করতে পারবেন না তারিখ মধ্যে কাস্টম বিন্যাস পরিবর্তে আপনি ব্যবহার করতে করেছি SimpleDateFormat.formatযে আয় পদ্ধতি string

String myString=format1.format(date);

2

কোনও java.util.Dateবস্তুকে পার্স করার জন্য আপনাকে নিজের ফর্ম্যাটটি ব্যবহার করে প্রথমে স্ট্রিংয়ে রূপান্তর করতে হবে।

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

তবে আমি বিশ্বাস করি আপনি এখানে অপ্রয়োজনীয় হচ্ছেন।


2
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 দিন প্রদর্শন করবে।


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

2
এসও আপনাকে স্বাগতম। দয়া করে কিছু প্রসঙ্গ / ব্যাখ্যা যুক্ত করুন কারণ কেবলমাত্র উত্তরগুলি আমাদের মান পূরণ করে না। দেখুন stackoverflow.com/help/how-to-answer
Uwe Allner

0

আমি এই কোডটি পেয়েছি যেখানে ডাটাবেসে তারিখের ক্ষেত্রের সাথে তুলনা করার জন্য তারিখটিকে একটি ফর্ম্যাটে তুলনা করা হয় ... এটি হতে পারে এটি আপনার পক্ষে সহায়ক হতে পারে ...

আপনি যখন সরলসেটফর্ম্যাট ব্যবহার করে স্ট্রিংটিকে তারিখে রূপান্তর করেন, তখন mysql ডাটাবেসগুলিতে তারিখের ক্ষেত্রের সাথে তুলনা করা শক্ত।

সুতরাং জাভা স্ট্রিংয়ের তারিখটি এই বিন্যাসে STR_to_DATE ('yourdate', '% m /% d /% Y') -> ব্যবহার করে ফর্ম্যাটে রূপান্তর করুন, তারপরে আপনি mysql তারিখ ক্ষেত্রের সঠিক তারিখের ফর্ম্যাটটি পাবেন।

http://javainfinite.com/java/java-convert-string-to-date-and-compare/


3
লিঙ্ক-রোট এবং অন্যান্য সমস্যার কারণে কেবলমাত্র লিঙ্ক-উত্তর স্ট্যাকওভারফ্লোতে নিরুৎসাহিত করা হয়। আপনি কী মূল পয়েন্ট সহ তথ্যের একটি সংক্ষিপ্তসার দিতে পারেন?
তুলিল বাউরক

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