মিনিটের মধ্যে দুটি জোডা-টাইম ডেটটাইমগুলির মধ্যে পার্থক্য কীভাবে পাওয়া যায়


141

নীচে আমি লিখেছি পদ্ধতিটি:

public List<Map<String, Object>> loadNotYetInEmployee(int shift, Date date,
        int transitionVal, String type, User user) {

    DateTime datetime = new DateTime(date);
    datetime = datetime
            .plus(Period.minutes(shiftTiming.getSession1InTime()));

    List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();

    sql = SqlMapUtils.getSql("attendance.attendancestatus.latein",
            parameters);
    result = getJdbcTemplate().queryForList(sql);
    for (int i = 0; i < result.size(); i++) {
        Date punchInTime = (Date) result.get(i).get("punchtime");
        DateTime punchTime = new DateTime(punchInTime);
    }
    return result;
}

এখন আমার পদ্ধতি থেকে আপনি দেখতে পাবেন যে আমার কাছে জোডা-টাইম ডেটটাইম অবজেক্টটি নামক বস্তুতে রয়েছে datetimeএবং আমার ফলাফল থেকে আমি একটি টাইমস্ট্যাম্প পাচ্ছি যা আমি জোদাটিমে রূপান্তর করছি punchTime। এখন আমি এই দুটি তারিখের মধ্যে পার্থক্যটি জানতে চাই, আমি কীভাবে এটি করব?



2
তবে এটি কেবল তখনই কাজ করবে যদি আপনার ডেটটাইম অবজেক্ট একই টাইম জোনে থাকে।
টিয়াগো

1
Days.daysBetween(d1, d2)আপনার বন্ধুর প্রতিবেশী
শুভম চৌধুরী চৌধুরী

উত্তর:


79

এটি আপনাকে মিলসেকেন্ডে দুটি ডেটটাইম অবজেক্টের মধ্যে পার্থক্য আনবে:

DateTime d1 = new DateTime();
DateTime d2 = new DateTime();

long diffInMillis = d2.getMillis() - d1.getMillis();

78
ম্যাডপ্রোগ্রামারের উত্তরটি স্বীকৃত উত্তর হওয়া উচিত। এর সহজ ব্যবহার লক্ষ্য করুন Minutes.minutesBetween
তুলিল বাউরক

5
না আমি একমত নই, এটি খুব কথার এবং অস্পষ্ট: "পাঞ্চের সময় তারিখের সময়ের কয়েক মিনিট" "দ্বিতীয় তারিখ মিলি সেকেন্ড বিয়োগ প্রথম তারিখ মিলি সেকেন্ড" এর চেয়েও খারাপ
জোনাথন নিউফিল্ড

4
এটি দিবালোকের সঞ্চয়গুলি আমলে নেবে না।
স্যান্ডার ভার্স্লুয়েস

454

কিছুটা এইরকম...

DateTime today = new DateTime();
DateTime yesterday = today.minusDays(1);

Duration duration = new Duration(yesterday, today);
System.out.println(duration.getStandardDays());
System.out.println(duration.getStandardHours());
System.out.println(duration.getStandardMinutes());

কোন ফলাফল

1
24
1440

অথবা

System.out.println(Minutes.minutesBetween(yesterday, today).getMinutes());

আপনি সম্ভবত পরে যা সম্ভবত


উপরেরগুলি কি অ্যাকাউন্ট সময় অঞ্চলগুলিতে গ্রহণ করে? অথবা আমার প্রথমে ইউটিসি / জিএমটিতে রূপান্তর করা উচিত?
ডু দাহ

@ ডুডাহ এটি একটি ভাল প্রশ্ন, আমি "বিশ্বাস করি" যে এটি করে (যেমন জোডাটাইমের ধারণাটি রয়েছে LocalTime) তবে আমি আপনাকে এটি পরীক্ষা করে দেখে দেখার পরামর্শ দিচ্ছি। যদিও প্রশ্নটি হবে, ফলাফল সময়টি কোন সময় অঞ্চলে প্রদর্শিত হবে?
ম্যাডপ্রোগ্রামার

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

2
আমি সম্মত, এটি নির্বাচিত উত্তর হওয়া উচিত ছিল। এটি পরিষ্কার এবং সহজ।
সিড

একটি সময়ের পার্থক্য পেতে একটি নতুন সময়কাল অবজেক্ট তৈরি করা ঠিক দুর্দান্ত নয়। তারিখ / সময় সামগ্রীর বৃহত অ্যারে সময় পার্থক্য করতে হবে তা কল্পনা করুন।
অ্যান্ড্রয়েডদেভ


3
DateTime d1 = ...;
DateTime d2 = ...;
Period period = new Period(d1, d2, PeriodType.minutes());
int differenceMinutes = period.getMinutes();

অনুশীলনে আমি মনে করি এটি সর্বদা উত্তর ভিত্তিক উত্তর হিসাবে একই ফলাফল দেবে Duration। মিনিটের চেয়ে আলাদা সময় ইউনিটের জন্য, যদিও এটি আরও সঠিক হতে পারে। উদাহরণস্বরূপ, 2016/2/2 থেকে 2017/2/1 পর্যন্ত 365 দিন রয়েছে, তবে আসলে এটি 1 বছরেরও কম এবং আপনি যদি ব্যবহার করেন তবে 0 বছর কেটে নেওয়া উচিত PeriodType.years()

তত্ত্বে লিপ সেকেন্ডের কারণে কয়েক মিনিটের জন্য একই ঘটনা ঘটতে পারে তবে জোদা লিপ সেকেন্ডকে সমর্থন করে না।

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