এক ঘন্টা আগে জাভা তারিখ পরিবর্তন করা হচ্ছে


124

আমার একটি জাভা ডেট অবজেক্ট রয়েছে:

Date currentDate = new Date();

এটি বর্তমান তারিখ এবং সময় দেবে। উদাহরণ:

Thu Jan 12 10:17:47 GMT 2012

পরিবর্তে, আমি তারিখটি পেতে চাই, এটিটিকে এক ঘন্টা পিছনে পরিবর্তন করে যাতে এটি আমাকে দেওয়া উচিত:

Thu Jan 12 09:17:47 GMT 2012

এটি করার সর্বোত্তম উপায় কী হবে?


mktimeজাভা কোন সমতুল্য আছে? এটি থেকে 60 মিনিট বিয়োগ?
শিপলু মোকাদ্দিম

উত্তর:


243

java.util.Calendar

Calendar cal = Calendar.getInstance();
// remove next line if you're always using the current time.
cal.setTime(currentDate);
cal.add(Calendar.HOUR, -1);
Date oneHourBack = cal.getTime();

java.util.Date

new Date(System.currentTimeMillis() - 3600 * 1000);

org.joda.time.LocalDateTime

new LocalDateTime().minusHours(1)

জাভা 8: java.time.LocalDateTime

LocalDateTime.now().minusHours(1)

জাভা 8 জাভা.টাইম.আইন্সট্যান্ট

// always in UTC if not timezone set
Instant.now().minus(1, ChronoUnit.HOURS));
// with timezone, Europe/Berlin for example
Instant.now()
       .atZone(ZoneId.of("Europe/Berlin"))
       .minusHours(1));

8
কেবলমাত্র ক্যালেন্ডার রয়েছে তার চেয়ে আলাদা হয়ে থাকুন H HOUR
ওল্ফ

সময়টি যদি কোনও দিনের মধ্যরাত্রি হয় এবং আপনি আগের ঘন্টা 11 ঘন্টা যা একটি ঘন্টা তাড়াতাড়ি চান ক্যালেন্ডারের সাথে প্রথম সমাধানটি কাজ করবে?
জর্জ অরোকিয়াম

1
@ জর্জিআরোকিয়াম হ্যাঁ এটি হবে
কিমি

66

@ সুমিত জৈনের সমাধানের মতো

Date currentDate = new Date(System.currentTimeMillis() - 3600 * 1000);

অথবা

Date currentDate = new Date(System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1));

3
উপায় ভাল সমাধান। ক্যালেন্ডার উদাহরণ তৈরি করা এই বিশেষ অ্যাপ্লিকেশনটিতে ওভারকিলের মতো দেখাচ্ছে।
www.Decompiler.com

2
@ কোসমোলেভ ক্যালেন্ডারটি বেশিরভাগ উদাহরণে আমি পাই over
পিটার লরি

2
@ স্টুয়ান আমি আরও একটি পঠনযোগ্য উদাহরণ যুক্ত করেছি। আপনার লক্ষ করা উচিত যে ক্যালেন্ডার অবিশ্বাস্যভাবে অক্ষম is
পিটার লরে

@ পিটারলাউরে Date currentDate = new Date(System.currentTimeMillis() - TimeUnit.MINUTES.toMillis(10)); এই 10 মিনিট পিছনে থাকা উচিত?
সিয়া সোসিবো

15

TL; ড

ইন ইউটিসি :

Instant.now().minus( 1 , ChronoUnit.HOURS ) 

বা, জোনেড:

Instant.now()
       .atZone( ZoneId.of ( "America/Montreal" ) )
       .minusHours( 1 )

জাভা.টাইম ব্যবহার

জাভা 8 এবং তার পরে নতুন জাভা.টাইম ফ্রেমওয়ার্ক অন্তর্নির্মিত রয়েছে।

Instant

আপনি যদি কেবল ইউটিসি (জিএমটি) এর বিষয়ে চিন্তা করেন তবে Instantক্লাসটি ব্যবহার করুন ।

Instant instant = Instant.now ();
Instant instantHourEarlier = instant.minus ( 1 , ChronoUnit.HOURS );

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

System.out.println ( "instant: " + instant + " | instantHourEarlier: " + instantHourEarlier );

তাত্ক্ষণিক: 2015-10-29T00: 37: 48.921Z | তাত্ক্ষণিক ঘন্টা প্রস্তুতকারক: 2015-10-28T23: 37: 48.921Z

এই তাত্ক্ষণিকর মধ্যে কীভাবে গতকের তারিখে ফিরে এলো তা নোট করুন।

ZonedDateTime

আপনি যদি কোনও সময় অঞ্চল সম্পর্কে যত্নশীল হন তবে ZonedDateTimeক্লাসটি ব্যবহার করুন । আপনি একটি তাত্ক্ষণিক দিয়ে শুরু করতে পারেন এবং একটি সময় অঞ্চল, একটি ZoneIdবিষয় বরাদ্দ করুন । এই শ্রেণিটি ডায়ালাইট সেভিং টাইম (ডিএসটি) এর মতো অসঙ্গতিগুলির জন্য প্রয়োজনীয় সমন্বয়গুলি পরিচালনা করে ।

Instant instant = Instant.now ();
ZoneId zoneId = ZoneId.of ( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant ( instant , zoneId );
ZonedDateTime zdtHourEarlier = zdt.minus ( 1 , ChronoUnit.HOURS );

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

System.out.println ( "instant: " + instant + "\nzdt: " + zdt + "\nzdtHourEarlier: " + zdtHourEarlier );

তাত্ক্ষণিক: 2015-10-29T00: 50: 30.778Z

zdt: 2015-10-28T20: 50: 30.778-04: 00 [আমেরিকা / মন্ট্রিল]

zdtHourEaryer: 2015-10-28T19: 50: 30.778-04: 00 [আমেরিকা / মন্ট্রিল]

রূপান্তর

পুরানো java.util. তারিখ /.ক্যালেন্ডার ক্লাসগুলি এখন তৈরি হয়েছে। এগুলি এড়িয়ে চলুন। তারা কুখ্যাতভাবে ঝামেলা এবং বিভ্রান্তিকর।

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

java.util.Date date = java.util.Date.from( instant );

... অথবা ...

java.util.Date date = java.util.Date.from( zdt.toInstant() );

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

Java.time ফ্রেমওয়ার্ক জাভা 8 এবং পরে পাতাটা করা হয়। এই শ্রেণীর বিরক্তিজনক পুরাতন স্থানচ্যুত উত্তরাধিকার যেমন তারিখ-সময় শ্রেণীর java.util.Date, Calendar, &SimpleDateFormat

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

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

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

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

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


হ্যালো স্যার, তাত্ক্ষণিকভাবে "সময় পূর্বে" তৈরি করার সঠিক উপায় আমি এখনও খুঁজে পাচ্ছি না।
টিকারহাজ



5

তারিখ থেকে এক ঘন্টার মধ্যে কেবলমাত্র মিলিসেকেন্ডের সংখ্যা বিয়োগ করুন।

currentDate.setTime(currentDate.getTime() - 3600 * 1000));


4

আপনি তারিখ এবং সময় জন্য বেলো কোড থেকে ব্যবহার করতে পারেন:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
       //get current date time with Calendar()
       Calendar cal = Calendar.getInstance();
       System.out.println("Current Date Time : " + dateFormat.format(cal.getTime()));

       cal.add(Calendar.DATE, 1);
       System.out.println("Add one day to current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.MONTH, 1);
       System.out.println("Add one month to current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.YEAR, 1);
       System.out.println("Add one year to current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.HOUR, 1);
       System.out.println("Add one hour to current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.MINUTE, 1);
       System.out.println("Add one minute to current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.SECOND, 1);
       System.out.println("Add one second to current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.DATE, -1);
       System.out.println("Subtract one day from current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.MONTH, -1);
       System.out.println("Subtract one month from current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.YEAR, -1);
       System.out.println("Subtract one year from current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.HOUR, -1);
       System.out.println("Subtract one hour from current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.MINUTE, -1);
       System.out.println("Subtract one minute from current date : " + dateFormat.format(cal.getTime()));

       cal = Calendar.getInstance();
       cal.add(Calendar.SECOND, -1);
       System.out.println("Subtract one second from current date : " + dateFormat.format(cal.getTime()));

আউটপুট:

Current Date Time : 2008/12/28 10:24:53
Add one day to current date : 2008/12/29 10:24:53
Add one month to current date : 2009/01/28 10:24:53
Add one year to current date : 2009/12/28 10:24:53
Add one hour to current date : 2008/12/28 11:24:53
Add one minute to current date : 2008/12/28 10:25:53
Add one second to current date : 2008/12/28 10:24:54
Subtract one day from current date : 2008/12/27 10:24:53
Subtract one month from current date : 2008/11/28 10:24:53
Subtract one year from current date : 2007/12/28 10:24:53
Subtract one hour from current date : 2008/12/28 09:24:53
Subtract one minute from current date : 2008/12/28 10:23:53
Subtract one second from current date : 2008/12/28 10:24:52

এই লিঙ্কটি ভাল: এখানে দেখুন

এবং দেখুন: দেখুন

এবং: এখানে

এবং: এখানে

এবং: এখানে

আপনার যদি প্রয়োজন সময়:

DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

2
এফওয়াইআই: এই উত্তরটিতে এখন ঝামেলা হওয়া পুরানো তারিখ-কালীন ক্লাসগুলি ব্যবহার করা হয়েছে যা এখনকার উত্তরাধিকার সূত্রে আধুনিক জাভা.টাইম ক্লাসগুলি দ্বারা সরবরাহ করা হয়েছে।
বেসিল Bourque

0

এটি ব্যবহার করে অর্জন করা যেতে পারে java.util.Date। নিম্নলিখিত কোডটি আপনার তারিখ থেকে 1 ঘন্টা বিয়োগ করবে।

Date date = new Date(yourdate in date format);
Date newDate = DateUtils.addHours(date, -1)

একইভাবে আপনার তারিখ থেকে 20 সেকেন্ড বিয়োগের জন্য

newDate = DateUtils.addSeconds(date, -20)    

-1

মিলিসেকেন্ডে সময় পান, আপনার মিনিটকে মিনিট সেকেন্ডে নেবেন এবং এটিকে তারিখে রূপান্তর করুন। এখানে আপনার একটি আপত্তি করা প্রয়োজন !!!

    int minutes = 60;
    long currentDateTime = System.currentTimeMillis();
    Date currentDate = new Date(currentDateTime - minutes*60*1000);
    System.out.println(currentDate);

@ মাক্কি: আমি জানি বিষয়গুলি পরিবর্তন হয়েছে। তবে এটি কোনও ভুল উত্তর নয় !!! কেন আপনি এটিকে ভুল উত্তর বলছেন? আপনি কি পুরোপুরি গৃহীত উত্তরটি দেখেছেন?
জেনিথ 9

1
এমনকি আপনি কেন এমন একটি প্রশ্নের উত্তর দেবেন যা 5 বছরের পুরানো এবং উত্তরটি স্বীকার করেছে।
মাক্কি

এই উত্তরটি বিদ্যমান বহু বছরের পুরানো উত্তরগুলির বাইরে কোনও মূল্য সরবরাহ করে না। এবং এই উত্তরটি অজ্ঞাতসারে ভয়াবহ পুরানো তারিখ-কালীন ক্লাসগুলি ব্যবহার করে যা জাভা.টাইম ক্লাসগুলি বছরের পর বছর ধরে সাপ্লান করেছে। অন্য সমস্যা: এই উত্তরটি সময় অঞ্চলটির বিষয়টি উপেক্ষা করে এবং এমন কোড দেখায় যা জেভিএমের বর্তমান ডিফল্ট সময় অঞ্চলটি ব্যবহার করবে যখন প্রশ্নটি জিএমটি / ইউটিসির জন্য জিজ্ঞাসা করেছিল। কিমি দ্বারা সঠিক উত্তরের পরবর্তী অংশগুলি দেখুন বা আরও আলোচনার জন্য আমার উত্তর দেখুন।
বেসিল Bourque

-1

এটি আমার পক্ষে ফর্ম্যাটটি ব্যবহার করার পরিবর্তে কাজ করেছে time

স্ট্রিং লোকালটাইম = "6:11"; লোকালটাইম লোকালটাইম = লোকালটাইম.পারস (লোকালটাইম)

লোকালটাইম lt = 6:11; লোকালটাইম = lt.toString ()


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