কীভাবে আমার তারিখে মিনিট যুক্ত করা যায়


110

আমার এই তারিখ অবজেক্টটি রয়েছে:

SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd HH:mm");
Date d1 = df.parse(interviewList.get(37).getTime());

ডি 1 এর মান Fri Jan 07 17:40:00 PKT 2011

এখন আমি উপরের তারিখে 10 মিনিট যুক্ত করার চেষ্টা করছি।

Calendar cal = Calendar.getInstance();
cal.setTime(d1);
cal.add(Calendar.MINUTE, 10);
String newTime = df.format(cal.getTime());

newTimeপরিবর্তনের মান 2011-50-07 17:50 তবে এটি হওয়া উচিত 07-01-2011 17:50

এটি মিনিট সঠিকভাবে যোগ করে তবে এটি মাসেও পরিবর্তিত হয়, কেন জানি না!



উত্তর:


193

আপনার জন্য সমস্যাটি হ'ল আপনি ব্যবহার করছেন mm। আপনার ব্যবহার করা উচিত MMMMমাসের জন্য এবং mmকয়েক মিনিটের জন্য। দিয়ে চেষ্টা করুনyyyy-MM-dd HH:mm

অন্যান্য পদ্ধতি:

এটি এর মতো সহজ হতে পারে (অন্য বিকল্পটি জোদা-সময় ব্যবহার করা হয় )

static final long ONE_MINUTE_IN_MILLIS=60000;//millisecs

Calendar date = Calendar.getInstance();
long t= date.getTimeInMillis();
Date afterAddingTenMins=new Date(t + (10 * ONE_MINUTE_IN_MILLIS));

ধন্যবাদ, আমি এটি চেষ্টা করেছি, তারিখটি সঠিকভাবে আসছে, তবে যখন আমি এটিকে স্ট্রিং হিসাবে পরিবর্তন করার চেষ্টা করি তখন এটি আমাকে একই ভুল ফলাফল দেয় স্ট্রিং নিউটাইম = ডিএফ.ফর্ম্যাট (অ্যাডিংটেনমিনস); এটি আমাকে 2011-50-07 17:50 দেয়, আমাকে স্ট্রিংয়ে রূপান্তর করতে হবে, কোনও পরামর্শ
জুনেদপ

1
@ জুনায়েডপ আপনি উত্তরোত্তর কোডটি ব্যবহার করেছেন, কিন্তু সমাধানের পূর্ববর্তী অংশটিকে উপেক্ষা করেছেন?
কার্ল

57

আপনি org.apache.commons.lang3.time প্যাকেজে ডেট ইউটিলস ক্লাস ব্যবহার করতে পারেন

int addMinuteTime = 5;
Date targetTime = new Date(); //now
targetTime = DateUtils.addMinutes(targetTime, addMinuteTime); //add minute

1
লোকেরা ডেট ইউটিলসের পুরানো সংস্করণ নিয়ে কাজ করে, এটির প্যাকেজে উপস্থিত রয়েছে ->org.apache.commons.lang.time.DateUtils
রিয়েলপিকে

32

@ পাঙ্গিয়ার উত্তরটি বাস্তবায়নের সুবিধার্থী পদ্ধতি:

/*
*  Convenience method to add a specified number of minutes to a Date object
*  From: http://stackoverflow.com/questions/9043981/how-to-add-minutes-to-my-date
*  @param  minutes  The number of minutes to add
*  @param  beforeTime  The time that will have minutes added to it
*  @return  A date object with the specified number of minutes added to it 
*/
private static Date addMinutesToDate(int minutes, Date beforeTime){
    final long ONE_MINUTE_IN_MILLIS = 60000;//millisecs

    long curTimeInMs = beforeTime.getTime();
    Date afterAddingMins = new Date(curTimeInMs + (minutes * ONE_MINUTE_IN_MILLIS));
    return afterAddingMins;
}

25

কোনও নির্ভরতা এড়াতে আপনি নীচে java.util.Clavender ব্যবহার করতে পারেন:

    Calendar now = Calendar.getInstance();
    now.add(Calendar.MINUTE, 10);
    Date teenMinutesFromNow = now.getTime();

জাভা 8 এ আমাদের নতুন এপিআই রয়েছে:

    LocalDateTime dateTime = LocalDateTime.now().plus(Duration.of(10, ChronoUnit.MINUTES));
    Date tmfn = Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());

17

এটি ভুলভাবে নির্দিষ্ট করা হয়েছে:

SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd HH:mm");

আপনি মাসের পরিবর্তে কয়েক মিনিট ব্যবহার করছেন (এমএম)


6

TL; ড

LocalDateTime.parse( 
    "2016-01-23 12:34".replace( " " , "T" )
)
.atZone( ZoneId.of( "Asia/Karachi" ) )
.plusMinutes( 10 )

java.time

তারিখ-সময় কাজের জন্য দুর্দান্ত জাভা.টাইম ক্লাস ব্যবহার করুন। এই ক্লাসগুলি ঝামেলা পুরাতন তারিখের সময় ক্লাস যেমন java.util.Dateএবং java.util.Calendar

আইএসও 8601

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

String input = "2016-01-23 12:34" ;
String inputModified = input.replace( " " , "T" );

LocalDateTime

আপনার ইনপুট স্ট্রিংটিকে এমন হিসাবে পার্স করুন LocalDateTimeযেহেতু এতে সময় অঞ্চল বা ইউটিসি-থেকে অফসেট সম্পর্কিত কোনও তথ্যের অভাব রয়েছে।

LocalDateTime ldt = LocalDateTime.parse( inputModified );

দশ মিনিট যোগ করুন।

LocalDateTime ldtLater = ldt.plusMinutes( 10 );

ldt.toString (): 2016-01-23T12: 34

ldtLater.toString (): 2016-01-23T12: 44

IdeOne.com এ লাইভ কোড দেখুন ।

যে LocalDateTimeতাই এটি নেই, কোন সময় জোন হয়েছে না টাইমলাইনে একটি বিন্দু প্রতিনিধিত্ব করে। একটি আসল মুহুর্তে অনুবাদ করতে একটি সময় অঞ্চল প্রয়োগ করুন। একটি নির্দিষ্ট করুন সঠিক সময় অঞ্চল নাম এর বিন্যাসে continent/regionযেমন America/Montreal, Africa/Casablancaঅথবা Pacific/Auckland, অথবা Asia/Karachi। 3-4 চিঠি সংক্ষেপ ব্যবহার না যেমন ESTবা ISTবা PKTতারা যেমন না সত্য সময় অঞ্চল, না মান, এবং এমনকি অনন্য নয় (!)।

ZonedDateTime

যদি আপনি এই মানটির জন্য লক্ষ্যযুক্ত সময় অঞ্চলটি জানেন তবে একটি ZoneIdপেতে একটি প্রয়োগ করুন ZonedDateTime

ZoneId z = ZoneId.of( "Asia/Karachi" );
ZonedDateTime zdt = ldt.atZone( z );

zdt.toString (): 2016-01-23T12: 44 + 05: 00 [এশিয়া / করাচি]

ব্যতিক্রমসমূহ

একটি সময় অঞ্চল যুক্ত করার আগে বা পরে এই দশ মিনিট যুক্ত করতে হবে কিনা তা চিন্তা করুন। ডেলাইট সেভিং টাইম (ডিএসটি) এর মতো অসঙ্গতিগুলির কারণে আপনি খুব আলাদা ফলাফল পেতে পারেন যা প্রাচীর-ঘড়ির সময় পরিবর্তন করে ।

জোন যুক্ত করার আগে আপনার 10 মিনিট যুক্ত করা উচিত কিনা তা আপনার ব্যবসায়ের পরিস্থিতি এবং নিয়মের অর্থের উপর নির্ভর করে।

টিপ: আপনি যখন টাইমলাইনে একটি নির্দিষ্ট মুহুর্তের উদ্দেশ্যে চান, সর্বদা সময় অঞ্চল তথ্য রাখুন । আপনার ইনপুট ডেটা দিয়ে সম্পন্ন হিসাবে তথ্য হারাবেন না। মানটি কি 12:34পাকিস্তানে দুপুর বা ফ্রান্সের দুপুর বা কোয়েবেকের মধ্যাহ্নের অর্থ? যদি আপনি পাকিস্তানের দুপুর বোঝাতে চান তবে কমপক্ষে অফসেট-থেকে-ইউটিসি ( +05:00) এবং আরও ভাল, সময় অঞ্চলটির নাম অন্তর্ভুক্ত করে এটি বলুন Asia/Karachi

Instant

আপনি যদি ইউটিসির লেন্সের মাধ্যমে দেখা একই মুহূর্তটি চান তবে একটিটি বের করুন InstantInstantক্লাসে টাইমলাইনে একটি মুহূর্ত প্রতিনিধিত্ব করে ইউটিসি একটি রেজোলিউশনে ন্যানোসেকেন্ড (একসঙ্গে নয় জন (9) একটি দশমিক ভগ্নাংশের সংখ্যায় পর্যবসিত)।

Instant instant = zdt.toInstant();

রূপান্তর

যখনই সম্ভব সমস্যাযুক্ত পুরানো তারিখের সময় ক্লাসগুলি এড়িয়ে চলুন। তবে আপনার যদি অবশ্যই হয় তবে আপনি রূপান্তর করতে পারেন। পুরানো ক্লাসে যুক্ত নতুন পদ্ধতিগুলি কল করুন।

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

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

Java.time ফ্রেমওয়ার্ক জাভা 8 এবং পরে পাতাটা করা হয়। এই ক্লাসগুলি , & , এর মতো সমস্যাযুক্ত পুরানো উত্তরাধিকারের তারিখ-সময়ের ক্লাসগুলিকে সহায়তা করে ।java.util.DateCalendarSimpleDateFormat

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

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

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

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


4

আপনার সরলডেট ফরমেটের ধরণে একটি ত্রুটি রয়েছে। এটা করা উচিত

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");

4

এই বিন্যাসটি ব্যবহার করুন,

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");

মিনিটের জন্য মিমি এবং মাউন্টের জন্য এমএম


2

একবার আপনার পার্স করার পরে, আমি ঘন্টা, মিনিট বা সেকেন্ড যোগ করতে এই ইউটিলিটি ফাংশনটি ব্যবহার করি:

public class DateTimeUtils {
    private static final long ONE_HOUR_IN_MS = 3600000;
    private static final long ONE_MIN_IN_MS = 60000;
    private static final long ONE_SEC_IN_MS = 1000;

    public static Date sumTimeToDate(Date date, int hours, int mins, int secs) {
        long hoursToAddInMs = hours * ONE_HOUR_IN_MS;
        long minsToAddInMs = mins * ONE_MIN_IN_MS;
        long secsToAddInMs = secs * ONE_SEC_IN_MS;
        return new Date(date.getTime() + hoursToAddInMs + minsToAddInMs + secsToAddInMs);
    }
}

দীর্ঘ সময় যোগ করার সময় সতর্কতা অবলম্বন করুন, 1 দিন সর্বদা 24 ঘন্টা থাকে না (দিবালোক সঞ্চয়-টাইপ সামঞ্জস্য, লিপ সেকেন্ড এবং এই জাতীয়), এর Calendarজন্য সুপারিশ করা হয়।


1

আমার জন্য ডেট ইউটিলস কাজ করুন

//import
import org.apache.commons.lang.time.DateUtils

...

        //Added and removed minutes to increase current range dates
        Date horaInicialCorteEspecial = DateUtils.addMinutes(new Date(corteEspecial.horaInicial.getTime()),-1)
        Date horaFinalCorteEspecial = DateUtils.addMinutes(new Date(corteEspecial.horaFinal.getTime()),1)

2
এই উত্তরটি কীভাবে গত বছর থেকে আলিরেজা আল্লাল্লাহ পোস্টের উন্নতি করতে পারে ? এছাড়াও, প্রশ্নটি কয়েক সেকেন্ড নয়, কয়েক মিনিট উল্লেখ করেছে।
বাসিল বাউরক

1

ধ্রুবক ছাড়াই করা যায় (3600000 এমএসের মতো 1 ঘন্টা)

public static Date addMinutesToDate(Date date, int minutes) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.MINUTE, minutes);
        return calendar.getTime();
    }

public static Date addHoursToDate(Date date, int hours) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.HOUR_OF_DAY, hours);
    return calendar.getTime();
}

ব্যবহারের উদাহরণ:

System.out.println(new Date());
System.out.println(addMinutesToDate(new Date(), 5));

Tue May 26 16:16:14 CEST 2020
Tue May 26 16:21:14 CEST 2020

1
এই ভয়াবহ তারিখ-সময় ক্লাসগুলি জেএসআর 310 গ্রহণের হিসাবে আধুনিক জাভা.টাইম ক্লাসগুলি দ্বারা বহু বছর পূর্বে অনুমান করা হয়েছিল
বেসিল বোর্কি

-2

কেবল আগ্রহী কারও পক্ষে। আমি একটি আইওএস প্রকল্পে কাজ করছিলাম যার অনুরূপ কার্যকারিতা প্রয়োজন তাই আমি জেজেনাগের উত্তরটি দ্রুত পরিবর্তন করতে পোর্টিং শেষ করেছি

private func addMinutesToDate(minutes: Int, beforeDate: NSDate) -> NSDate {
    var SIXTY_SECONDS = 60

    var m = (Double) (minutes * SIXTY_SECONDS)
    var c =  beforeDate.timeIntervalSince1970  + m
    var newDate = NSDate(timeIntervalSince1970: c)

    return newDate
}

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