স্ট্রিংয়ের ভিতরে আমার একটি তারিখ রয়েছে, "12-ডিসেম্বর -2012" এর মতো কিছু। আমি কীভাবে এটিকে মিলি সেকেন্ডে (দীর্ঘ) রূপান্তর করতে পারি?
স্ট্রিংয়ের ভিতরে আমার একটি তারিখ রয়েছে, "12-ডিসেম্বর -2012" এর মতো কিছু। আমি কীভাবে এটিকে মিলি সেকেন্ডে (দীর্ঘ) রূপান্তর করতে পারি?
উত্তর:
সিম্পলডেট ফরমেট ব্যবহার করা
String string_date = "12-December-2012";
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
try {
Date d = f.parse(string_date);
long milliseconds = d.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
কেউ এই প্রশ্নের আধুনিক উত্তর সরবরাহ করে এমন সময় about ২০১২ সালে যখন প্রশ্ন জিজ্ঞাসা করা হয়েছিল, উত্তরগুলিও আবার পোস্ট করা হয়েছিল তখন ভাল উত্তর ছিল। ২০১ 2016-এ পোস্ট করা উত্তরগুলি কেন তত্কালীন দীর্ঘকালীন ক্লাস ব্যবহার করে SimpleDateFormat
এবং Date
এটি আমার কাছে কিছুটা রহস্য। java.time
, আধুনিক জাভা তারিখ এবং সময় এপিআই যা জেএসআর -310 হিসাবে পরিচিত, এটি কাজ করার জন্য খুব সুন্দর। থ্রিটেনএবিপি-র মাধ্যমে আপনি এটিকে অ্যান্ড্রয়েডে ব্যবহার করতে পারেন, এই প্রশ্নটি দেখুন: অ্যান্ড্রয়েড প্রকল্পে থ্রিটেনএবিপি কীভাবে ব্যবহার করবেন ।
বেশিরভাগ উদ্দেশ্যে আমি ইউটিসিতে দিনের শুরুতে পর্বের পর থেকে মিলিসেকেন্ডগুলি ব্যবহার করার পরামর্শ দিই । এগুলি পেতে:
DateTimeFormatter dateFormatter
= DateTimeFormatter.ofPattern("d-MMMM-uuuu", Locale.ENGLISH);
String stringDate = "12-December-2012";
long millisecondsSinceEpoch = LocalDate.parse(stringDate, dateFormatter)
.atStartOfDay(ZoneOffset.UTC)
.toInstant()
.toEpochMilli();
System.out.println(millisecondsSinceEpoch);
এই মুদ্রণ:
1355270400000
নির্দিষ্ট কিছু সময় অঞ্চলে যদি দিনের শুরুতে সময় প্রয়োজন হয় তবে ইউটিসির পরিবর্তে সেই সময় অঞ্চলটি নির্দিষ্ট করুন, উদাহরণস্বরূপ:
.atStartOfDay(ZoneId.of("Asia/Karachi"))
প্রত্যাশিত হিসাবে এটি কিছুটা আলাদা ফলাফল দেয়:
1355252400000
আরেকটি বিষয় লক্ষণীয়, আপনার একটি লোকাল সরবরাহ মনে রাখবেন DateTimeFormatter
। আমি ডিসেম্বরকে ইংরেজী হতে নিয়েছিলাম, অন্যান্য ভাষা আছে যেখানে সেই মাসটিকে একই বলা হয়, তাই দয়া করে যথাযথ লোকালটি নিজেই বেছে নিন। যদি আপনি কোনও লোকেল সরবরাহ না করেন তবে ফর্ম্যাটরটি জেভিএম এর লোকাল সেটিংটি ব্যবহার করবে যা অনেক ক্ষেত্রে কাজ করতে পারে এবং তারপরে অপ্রত্যাশিতভাবে একদিন ব্যর্থ হয় যখন আপনি কোনও ডিভাইসে আলাদা লোকাল সেটিং দিয়ে অ্যাপ চালাবেন।
SimpleDateFormat
শ্রেণীর দিকে একবার নজর দিন যা a কে পার্স করতে পারে এবং ক্লাসের পদ্ধতিটি String
ফিরে আসতে পারে ।Date
getTime
Date
java.util.Date
তারিখ বিন্যাস ব্যবহার করে স্ট্রিং রূপান্তর করুনসবচেয়ে সহজ উপায় তারিখটি ব্যবহারের তারিখ () এবং গেটটাইম () ব্যবহার করা হয়
Date dte=new Date();
long milliSeconds = dte.getTime();
String strLong = Long.toString(milliSeconds);
System.out.println(milliSeconds)
সরলডেটফর্ম্যাট ব্যবহার করে আপনি এটি সহজেই অর্জন করতে পারেন।
1) প্রথম স্ট্রিমটি জাভাতে রূপান্তর করুন simp
২) তারিখ থেকে মিলিসেকের গণনা পাওয়ার জন্য গেটটাইম পদ্ধতিটি ব্যবহার করুন
public class test {
public static void main(String[] args) {
String currentDate = "01-March-2016";
SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
Date parseDate = f.parse(currentDate);
long milliseconds = parseDate.getTime();
}
}
কোড নীচে চেষ্টা করুন
SimpleDateFormat f = new SimpleDateFormat("your_string_format", Locale.getDefault());
Date d = null;
try {
d = f.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
long timeInMillis = d.getTime();