আমি কীভাবে একটি ডেট অবজেক্টে n ঘন্টা যুক্ত করব? আমি স্ট্যাকওভারফ্লোতে দিনগুলি ব্যবহার করে অন্য একটি উদাহরণ পেয়েছি, তবে কীভাবে ঘন্টা সহকারে এটি করা যায় তা এখনও বুঝতে পারি না।
আমি কীভাবে একটি ডেট অবজেক্টে n ঘন্টা যুক্ত করব? আমি স্ট্যাকওভারফ্লোতে দিনগুলি ব্যবহার করে অন্য একটি উদাহরণ পেয়েছি, তবে কীভাবে ঘন্টা সহকারে এটি করা যায় তা এখনও বুঝতে পারি না।
উত্তর:
ক্যালেন্ডার ক্লাস চেক করুন। add
সময়ের কারসাজির অনুমতি দেওয়ার জন্য এর পদ্ধতি (এবং কিছু অন্যান্য) রয়েছে। এর মতো কিছু কাজ করা উচিত।
Calendar cal = Calendar.getInstance(); // creates calendar
cal.setTime(new Date()); // sets calendar time/date
cal.add(Calendar.HOUR_OF_DAY, 1); // adds one hour
cal.getTime(); // returns new date object, one hour in the future
পরীক্ষা করে দেখুন এপিআই আরো অনেক কিছুর জন্য।
Calendar.add()
স্বয়ংক্রিয়ভাবে সেটির যত্ন নেয়।
java.util.Date
, java.util.Calendar
এবং java.text.SimpleDateFormat
এখন উত্তরাধিকার দ্বারা supplanted java.time জাভা 8 & জাভা 9. দেখুন পাতাটা শ্রেণীর টিউটোরিয়াল ওরাকল দ্বারা ।
আপনি যদি অ্যাপাচি কমন্স / ল্যাং ব্যবহার করেন তবে আপনি এটি ব্যবহার করে এক ধাপে এটি করতে পারেন DateUtils.addHours()
:
Date newDate = DateUtils.addHours(oldDate, 3);
(মূল বস্তুটি অপরিবর্তিত)
DateUtils.addHours(oldDate, -1);
@ ক্রিস্টোফারের উদাহরণকে সরল করার জন্য।
বলুন আপনার একটি ধ্রুবক আছে
public static final long HOUR = 3600*1000; // in milli-seconds.
তুমি লিখতে পারো.
Date newDate = new Date(oldDate.getTime() + 2 * HOUR);
আপনি যদি তারিখ অবজেক্টের পরিবর্তে তারিখ / সময় সংরক্ষণ করতে দীর্ঘ ব্যবহার করেন তবে আপনি করতে পারেন
long newDate = oldDate + 2 * HOUR;
myJavaUtilDate.toInstant()
.plusHours( 8 )
অথবা ...
myJavaUtilDate.toInstant() // Convert from legacy class to modern class, an `Instant`, a point on the timeline in UTC with resolution of nanoseconds.
.plus( // Do the math, adding a span of time to our moment, our `Instant`.
Duration.ofHours( 8 ) // Specify a span of time unattached to the timeline.
) // Returns another `Instant`. Using immutable objects creates a new instance while leaving the original intact.
জাভা.টাইম ফ্রেমওয়ার্কটি জাভা 8 এ নির্মিত এবং পরে পুরাতন জাভা.ইটি.এল.ডেট /.ক্যালেন্ডার ক্লাসগুলি সরবরাহ করে। সেই পুরানো ক্লাসগুলি কুখ্যাত সমস্যাযুক্ত। এগুলি এড়িয়ে চলুন।
toInstant
পুরানো টাইপ থেকে নতুন জাভা.টাইম টাইপে রূপান্তর করতে java.util.Date- এ নতুনভাবে যুক্ত পদ্ধতিটি ব্যবহার করুন । একটি Instant
সময় লাইনে একটি মুহূর্ত ইউটিসি একটি রেজোলিউশনে ন্যানোসেকেন্ড ।
Instant instant = myUtilDate.toInstant();
আপনি যেমন Instant
পাস করে ঘন্টা ঘন্টা যোগ করতে পারেন ।TemporalAmount
Duration
Duration duration = Duration.ofHours( 8 );
Instant instantHourLater = instant.plus( duration );
সেই তারিখ-সময়টি পড়তে, কল করে স্ট্যান্ডার্ড আইএসও 8601 ফর্ম্যাটে একটি স্ট্রিং তৈরি করুন toString
।
String output = instantHourLater.toString();
আপনি কোনও মুহূর্তটি কোনও অঞ্চলের প্রাচীর-ঘড়ির সময় লেন্সের মাধ্যমে দেখতে চাইতে পারেন । Instant
একটি তৈরি করে আপনার পছন্দসই / প্রত্যাশিত সময় অঞ্চলে সামঞ্জস্য করুন ZonedDateTime
।
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
বিকল্পভাবে, আপনি plusHours
আপনার ঘন্টা গণনা যোগ করতে কল করতে পারেন। জোনেড হওয়ার অর্থ ডাইটলাইট সেভিং টাইম (ডিএসটি) এবং অন্যান্য অসঙ্গতিগুলি আপনার পক্ষে পরিচালিত হবে।
ZonedDateTime later = zdt.plusHours( 8 );
আপনি সহ পুরাতন তারিখ-সময় শ্রেণীর ব্যবহার এড়িয়ে চলা উচিত java.util.Date
এবং .Calendar
। তবে আপনার যদি java.util.Date
জাভা.টাইম টাইপের জন্য এখনও আপডেট হয়নি এমন ক্লাসগুলির সাথে আন্তঃব্যবহারের জন্য সত্যিকারের প্রয়োজন হয় তবে সেখান থেকে রূপান্তর ZonedDateTime
করুন Instant
। পুরানো ক্লাসে যুক্ত নতুন পদ্ধতিগুলি জাভা.টাইম টাইপগুলিতে / থেকে রূপান্তরকে সহায়তা করে।
java.util.Date date = java.util.Date.from( later.toInstant() );
রূপান্তরকরণ সম্পর্কে আরও আলোচনার জন্য, প্রশ্নের উত্তরটি আমার দেখুন , java.util রূপান্তর করুন ate "জাভা.টাইম" টাইপটি কী তারিখে? ।
Java.time ফ্রেমওয়ার্ক জাভা 8 এবং পরে পাতাটা করা হয়। এই ক্লাসগুলি , & , এর মতো সমস্যাযুক্ত পুরানো উত্তরাধিকারের তারিখ-সময়ের ক্লাসগুলিকে সহায়তা করে ।java.util.Date
Calendar
SimpleDateFormat
Joda-টাইম প্রকল্প, এখন রক্ষণাবেক্ষণ মোড , মাইগ্রেশনে উপদেশ java.time ক্লাস।
আরও জানতে, ওরাকল টিউটোরিয়ালটি দেখুন । এবং অনেক উদাহরণ এবং ব্যাখ্যার জন্য স্ট্যাক ওভারফ্লো অনুসন্ধান করুন। স্পেসিফিকেশনটি জেএসআর 310 ।
আপনি আপনার ডাটাবেসের সাথে জাভা.টাইম অবজেক্টগুলি সরাসরি বিনিময় করতে পারেন । জেডিবিসি ৪.২ বা তারপরের সাথে অনুগত একটি জেডিবিসি ড্রাইভার ব্যবহার করুন । স্ট্রিংগুলির দরকার নেই, ক্লাসের প্রয়োজন নেই ।java.sql.*
জাভা.টাইম ক্লাস কোথায় পাবেন?
ThreeTen-অতিরিক্ত প্রকল্প অতিরিক্ত শ্রেণীর সাথে java.time প্রসারিত করে। এই প্রকল্পটি জাভা.টাইমে সম্ভাব্য ভবিষ্যতের সংযোজনগুলির একটি প্রমাণযোগ্য ক্ষেত্র। আপনি এখানে কিছু দরকারী শ্রেণীর যেমন খুঁজে পেতে পারেন Interval
, YearWeek
, YearQuarter
, এবং আরো ।
জোদা-সময় সহ With
DateTime dt = new DateTime();
DateTime added = dt.plusHours(6);
ClassNotDefinedException
ZonedDateTime
পরিবর্তে একটি পরিবর্তে যাওয়া উচিত LocalDateTime
। "স্থানীয়" মানে না কোন বিশেষ এলাকার বাঁধা, এবং না টাইমলাইনে বাঁধা। "ক্রিসমাস 25 ডিসেম্বর, 2015 এর মধ্যরাতে শুরু হয়" এর মতো বিভিন্ন সময় অঞ্চল জুড়ে একটি আলাদা মুহূর্ত, সময়রেখায় একটি নির্দিষ্ট মুহূর্ত পাওয়ার জন্য আপনি কোনও নির্দিষ্ট সময় অঞ্চল প্রয়োগ না করা পর্যন্ত কোনও অর্থ নেই। তদ্ব্যতীত, কোনও সময় অঞ্চল ছাড়া দিবালোক সংরক্ষণের সময় (ডিএসটি) এবং অন্যান্য ব্যতিক্রমগুলি লোকালডেটটাইমের ব্যবহারের সাথে পরিচালিত হবে না। তুলনা করে আমার উত্তর দেখুন ।
java.util.Date
অবজেক্ট হিসেবে অনুরোধকারীকে আমাদের জিজ্ঞাসা ছিল ZonedDateTime.toInstant()
এবং Date.from()
যেমন এখানে বর্ণিত stackoverflow.com/a/32274725/5661065
কিছুটা এইরকম:
Date oldDate = new Date(); // oldDate == current time
final long hoursInMillis = 60L * 60L * 1000L;
Date newDate = new Date(oldDate().getTime() +
(2L * hoursInMillis)); // Adds 2 hours
java.util.Date
, java.util.Calendar
এবং java.text.SimpleDateFormat
এখন উত্তরাধিকার দ্বারা supplanted java.time জাভা 8 & জাভা 9. দেখুন পাতাটা শ্রেণীর টিউটোরিয়াল ওরাকল দ্বারা ।
আপনার কোডটি Date
টাইমটাইম ফর্ম্যাটে থাকা অবস্থায় এটি কোডের অন্য অংশ piece এই কোডটির সৌন্দর্য হ'ল, যদি আপনি আরও বেশি ঘন্টা দেন তবে তারিখটিও সেই অনুযায়ী আপডেট হবে।
String myString = "09:00 12/12/2014";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm dd/MM/yyyy");
Date myDateTime = null;
//Parse your string to SimpleDateFormat
try
{
myDateTime = simpleDateFormat.parse(myString);
}
catch (ParseException e)
{
e.printStackTrace();
}
System.out.println("This is the Actual Date:"+myDateTime);
Calendar cal = new GregorianCalendar();
cal.setTime(myDateTime);
//Adding 21 Hours to your Date
cal.add(Calendar.HOUR_OF_DAY, 21);
System.out.println("This is Hours Added Date:"+cal.getTime());
এখানে আউটপুট:
This is the Actual Date:Fri Dec 12 09:00:00 EST 2014
This is Hours Added Date:Sat Dec 13 06:00:00 EST 2014
Date argDate = new Date(); //set your date.
String argTime = "09:00"; //9 AM - 24 hour format :- Set your time.
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy");
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm");
String dateTime = sdf.format(argDate) + " " + argTime;
Date requiredDate = dateFormat.parse(dateTime);
আপনি যদি ব্যবহার করতে ইচ্ছুক java.time
হন তবে আইএসও 8601 ফর্ম্যাটেড সময়সীমা যুক্ত করার একটি পদ্ধতি এখানে রয়েছে:
import java.time.Duration;
import java.time.LocalDateTime;
...
LocalDateTime yourDate = ...
...
// Adds 1 hour to your date.
yourDate = yourDate.plus(Duration.parse("PT1H")); // Java.
// OR
yourDate = yourDate + Duration.parse("PT1H"); // Groovy.
Duration.parse(iso8601duration)
আকর্ষণীয়, ধন্যবাদ, কিন্তু আপনি অপারেটর ব্যবহার করতে পারবেন না হয় +
উপর LocalDateTime
, সম্পাদনা করতে যে চাইবেন। কিন্তু .plus(...)
কাজ করে।
Date
অবজেক্ট সম্পর্কে , যা ইউটিসিতে একটি নির্দিষ্ট মুহুর্তের প্রতিনিধিত্ব করে। আপনার ব্যবহার LocalDateTime
প্রশ্নটির সমাধান করতে ব্যর্থ। LocalDateTime
টাইম জোন বা অফসেট-ইউটিসি-এর কোনও ধারণার অভাব রয়েছে এবং তাই কোনও মুহুর্তের প্রতিনিধিত্ব করতে পারে না। এই সমস্যার জন্য ভুল শ্রেণি। ইনস্ট্যান্ট এবং লোকালডেটটাইমের মধ্যে পার্থক্য কী
Date
অবজেক্টটি হ্রাস করা হয়েছে। প্রশ্নটি অস্পষ্ট যখন এটি টাইম জোনে আসে তাই আমার উত্তরগুলি দাঁড়িয়ে। উপরন্তু, আপনি শুধু অদলবদল করতে পারেন LocalDateTime
জন্য ZonedDateTime
।
আপনি জোদা ডেটটাইম এপিআই দিয়ে এটি করতে পারেন
DateTime date= new DateTime(dateObj);
date = date.plusHours(1);
dateObj = date.toDate();
জাভা 8 ক্লাস ব্যবহার করে। আমরা নীচের মতো খুব সহজেই তারিখ এবং সময়কে কাজে লাগাতে পারি।
LocalDateTime today = LocalDateTime.now();
LocalDateTime minusHours = today.minusHours(24);
LocalDateTime minusMinutes = minusHours.minusMinutes(30);
LocalDate localDate = LocalDate.from(minusMinutes);
Date
অবজেক্ট সম্পর্কে , যা ইউটিসিতে একটি নির্দিষ্ট মুহুর্তের প্রতিনিধিত্ব করে। আপনার ব্যবহার LocalDateTime
প্রশ্নটির সমাধান করতে ব্যর্থ। LocalDateTime
টাইম জোন বা অফসেট-ইউটিসি-এর কোনও ধারণার অভাব রয়েছে এবং তাই কোনও মুহুর্তের প্রতিনিধিত্ব করতে পারে না। এই সমস্যার জন্য ভুল শ্রেণি। ইনস্ট্যান্ট এবং লোকালডেটটাইমের মধ্যে পার্থক্য কী
আপনি জাভা 8 থেকে লোকালডেটটাইম ক্লাস ব্যবহার করতে পারেন উদাহরণস্বরূপ:
long n = 4;
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println(localDateTime.plusHours(n));
Date
অবজেক্ট সম্পর্কে , যা ইউটিসিতে একটি নির্দিষ্ট মুহুর্তের প্রতিনিধিত্ব করে। আপনার ব্যবহার LocalDateTime
প্রশ্নটির সমাধান করতে ব্যর্থ। LocalDateTime
টাইম জোন বা অফসেট-ইউটিসি-এর কোনও ধারণার অভাব রয়েছে এবং তাই কোনও মুহুর্তের প্রতিনিধিত্ব করতে পারে না। এই সমস্যার জন্য ভুল শ্রেণি। ইনস্ট্যান্ট এবং লোকালডেটটাইমের মধ্যে পার্থক্য কী
আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন, এটি বোঝা এবং বাস্তবায়ন করা সহজ:
public static java.util.Date AddingHHMMSSToDate(java.util.Date date, int nombreHeure, int nombreMinute, int nombreSeconde) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR_OF_DAY, nombreHeure);
calendar.add(Calendar.MINUTE, nombreMinute);
calendar.add(Calendar.SECOND, nombreSeconde);
return calendar.getTime();
}