আমার একটি টাইমস্ট্যাম্প রয়েছে যা ইউটিসিতে রয়েছে
"2010-10-25 23:48:46 ইউটিসি"
আমার এটি আইএসও 8601 এ রূপান্তর করতে হবে
"2010-10-29 06: 09Z"
নথিটি নরক হিসাবে বিভ্রান্তিকর - এটি করার সহজতম উপায় কী?
উত্তর:
আমি মনে করি আপনি আমাদের প্রতারিত করার চেষ্টা করছেন।
আপনার প্রশ্নের ইনপুট তারিখটি ২৫ শে অক্টোবর, ২০১০ , আউটপুট ২৯ শে অক্টোবর, ২০১০ । ভালো খেলেছ!
এই নিট-বাছাইয়ের থ্রেড অব্যাহত রেখেছেন: আপনার সময়গুলিও সম্পূর্ণ আলাদা এবং আপনি আউটপুট সময় থেকে কয়েক সেকেন্ড মিস করছেন।
এখন সত্য উত্তরের জন্য।
প্রথমে কিছুটা সত্যই: রুবিতে আইএসও 8601 আউটপুট আইএসও 8601 এর উইকিপিডিয়া পৃষ্ঠা থেকে "সংযুক্ত তারিখ এবং সময়" আউটপুট অনুরূপ ।
আপনার কাছে একটি স্ট্রিং রয়েছে এবং তাই আপনাকে এটিকে কোনও Time
অবজেক্টে রূপান্তর করতে হবে যা আপনি এটি করতে পারেন to_time
। তারপরে iso8601
আইএসও 8601 সংস্করণটি পাওয়ার জন্য কেবল object অবজেক্টটিতে কল করার বিষয়টি :
"2010-10-25 23:48:46 UTC".to_time.iso8601
to_time
থাকাকালীন পদ্ধতি, পাগল সৌজন্যে হয় iso8601
রুবি এর স্ট্যান্ডার্ড গ্রন্থাগার সৌজন্যে হয়।
অনেক পরীক্ষা-নিরীক্ষার পরেও আমি টাইম লাইব্রেরির পার্সারটিকে ডেটটাইমের চেয়ে ভাল বলে মনে করি, যদিও কারণগুলি এই মুহূর্তে আমাকে এড়িয়ে চলে। সেই সতর্কতার সাথে আমি এই ধরণের স্টাফের জন্য ডেটটাইমের পরিবর্তে সর্বদা সময় ব্যবহার করি এবং রুবি ডকুমেন্টেশন কেন এটি কেন তা জানাতে অসুবিধা হয়,
require 'time'
puts Time.parse("2010-10-25 23:48:46 UTC").iso8601
"2010-10-25T23:48:46Z"
Time.parse("...").utc.iso8601
এটিটি দেখতে চাইতে পারেন: অন্যভাবে আপনি সময়টির সাথে প্রত্যয়যুক্ত সময় পাবেন +03:00
বা সময়সীমার আসল সময়ের স্ট্রিংয়ের উপর নির্ভর করে কিছু অন্যান্য মান পাবেন। আমি এর পরিবর্তে বলতে চাই Z
।
দ্রষ্টব্য: আপনি টো-টাইম পদ্ধতি প্রয়োগ করার আগে আপনাকে একটি টাইম স্ট্রিংকে একটি টাইম অবজেক্টে রূপান্তর করতে হবে (পার্স করা)।
ruby-1.9.2-p180 :016 > "2010-10-25 23:48:46 UTC".to_time.iso8601
NoMethodError: undefined method `to_time' for "2010-10-25 23:48:46 UTC":String
from (irb):16
সঠিক পদ্ধতি:
irb> ut = DateTime.parse("2010-10-25 23:48:46 UTC")
irb> ut.iso8601
=> "2010-10-25T23:48:46+00:00"
এই অতি পুরানো প্রশ্নের উত্তর যুক্ত করা হচ্ছে কারণ আপনি যদি রেলগুলি ব্যবহার করেন তবে এখানকার অন্যান্য উত্তরগুলি আপনাকে যা করতে বলছে সেভাবে রূপান্তর / পার্স করার দরকার নেই:
created_at
বা updated_at
গুণ), আপনি সরাসরিiso8601
সেই টাইমস্ট্যাম্পটিতে পদ্ধতিটি কল করতে পারেন (যেমন,object.created_at.iso8601
)।iso8601
পদ্ধতি এছাড়াও ভগ্নাংশ সংখ্যার প্রদর্শন করতে একটি সাংখ্যিক যুক্তি গ্রহণ করে; আপনি যদি 2020-04-06T19:16:55.604Z
পরিবর্তে চান তবে আপনি এটি ব্যবহার করবেন 2020-04-06T19:16:55Z
।https://api.rubyonrails.org/v5.2.4/class/ActtiveSupport/TimeWithZone.html#method-i-iso8601