স্ট্রিংকে ডেটটাইমে রূপান্তর করুন


101

ডেটটাইম অবজেক্টে আমাকে স্ট্রিংয়ের বিশ্লেষণ করতে হবে:
30/Nov/2009:16:29:30 +0100

এটি করার কোনও সহজ উপায় আছে?

পিএস: আমি উপরের স্ট্রিংটি যেমন রূপান্তর করতে চাই তেমন। বছরের পরের কোলন টাইপো নয়। আমিও রুবি দিয়ে সমস্যাটি সমাধান করতে চাই, আরআর এর সাথে নয়।

উত্তর:


101

ডেটটাইম.স্ট্রিপটাইম আপনাকে ফর্ম্যাট নির্দিষ্ট করতে এবং একটি স্ট্রিংকে ডেটটাইমে রূপান্তর করতে দেয়।


4
ধন্যবাদ মিস করেছেন, আমি এটিকে নিজের ফর্ম্যাটটি দিতে পারি। এখানে কার্যকারীটি এখানে রয়েছে: '% d /% b /% Y:% H:% M:% S'
SkaveRat

4
@ স্কাভের্যাট আপনার স্ট্রিং কি টাইমজোনকে সম্মান করে? আমি ব্যবহার%d/%b/%Y:%H:%M:%S %Z
knut

4
উপলব্ধ বিন্যাসের সংক্ষিপ্তসারগুলির তালিকার জন্য gist.github.com/halloffame/5350249
রায়ান

9
স্ট্রিং রূপান্তরকরণের উদাহরণ উল্লেখ করা ভদ্র হবে, যা ব্যবহারকারী জিজ্ঞাসা করেছিলেন, "সেখানে পড়তে যান না" (যেখানে তথ্যের মাধ্যমে প্রচুর পরিমাণে তথ্য রয়েছে)। স্ট্যাকওভারফ্লো জনপ্রিয় নয় কারণ এটি বাহ্যিক ডকুমেন্টেশনের লিঙ্ক দেয়, তবে প্রশ্নের উত্তর দেয়
ড্যানিয়েল গারমোশকা

"নির্ভুল ম্যাচ" করার কোনও উপায় আছে কি? বর্তমানে আচরণটি "শুরু থেকে মিলছে", সুতরাং %Yউভয়ের সাথেই মিলবে 2015(প্রত্যাশার সাথে) এবং 2016-foo-barযেহেতু এটি দেখলে এটি বন্ধ হয়ে যায় 2016। এই আচরণটি সি পালকের সাথে সামঞ্জস্যপূর্ণ; তবে ম্যাচটি সঠিক কিনা তা সিদ্ধান্ত নেওয়ার জন্য সি ফাংশন ম্যাচের সমাপ্তির অবস্থানটি (যেমন -"2016" ক্ষেত্রে প্রথম ) ফিরিয়ে দেয় ; রুবিতে এটি একটি ফেরত দেয় DateTime, সুতরাং এরপরে এখনও কিছু আছে কিনা তা আমরা বলতে পারি না।
ফ্র্যাঙ্কলিন ইউ

98

এটি কি কারাগারের জন্য কাজ করে না ?

"30/Nov/2009 16:29:30 +0100".to_datetime

4
রুবি ১.৯.৩ ব্যবহার করে ails.২.৩ রেলগুলিতে দুর্দান্তভাবে কাজ করে ... "2012-05-16 02:30 ইউটিসি"। টো_ডেটটাইম => বুধ, 16 মে 2012 02:30:00 +0000
টিলো

59
এটিও রুবেল অন রেলস পদ্ধতি, কোনও রুবি পদ্ধতি নয়।
জ্যাকসিএ

4
এটি হওয়া উচিত: require 'active_support/all' এবং তারপরে "30/Nov/2009 16:29:30 +0100".to_datetime (আপনার আসলে সমস্ত অ্যাক্টিভ_সপোর্ট এক্সটেনশনগুলির প্রয়োজন নেই, তবে কোনটি বেছে বেছে প্রয়োজন তা নির্ধারণের জন্য সৌভাগ্য)
ম্যাট জুকোভস্কি

4
অ্যাক্টিভসপোর্টটি খুব বুদ্ধিমানভাবে সাজানো হয়েছে, তবে কমপক্ষে প্রভাবের জন্য, to_datetimeআপনাকে Stringঅবজেক্টগুলিতে যুক্ত করা দরকার require 'active_support/core_ext/string/conversions'
এমনটি

4
প্রশ্নটি "30 / নভেম্বর / 2009: 16: 29: 30 +0100" এবং "30 / নভেম্বর / 2009 16:29:30 +0100" সম্পর্কে নয়। এটি কাজ না করার অন্য কারণ।
schmijos


15

আমি Time.parse("02/07/1988")অন্যান্য পোস্টারগুলির মতো ব্যবহার করেছি ।

একটি আকর্ষণীয় গ্যাচা হ'ল Timeআমি আইআরবি খুললে ডিফল্টরূপে লোড হয়েছিল, কিন্তুTime.parse সংজ্ঞায়িত হয়নি। আমাকে require 'time'এটি কাজ করতে হবে।

এটি রুবি ২.২ এর সাথে।



12

এই DATETIME থেকে তারিখ স্ট্রিং রূপান্তর হবে ব্যবহার পাগল :

"05/05/2012".to_time

ডক রেফারেন্স: https://apidock.com/rails/String/to_টাইম


21
এটি কোনও রুবি অন রেল পদ্ধতি, কোনও রুবি পদ্ধতি নয়।
জ্যাকসিএ

4
যদিও এটি এই প্রশ্নের উত্তর ছিল না, এটি আমাকে একগুচ্ছ সাহায্য করেছিল। ধন্যবাদ @ ব্যবহারকারী 1425976
কর্লিনজেন

লোকেরা কেন রুবির প্রশ্নের উপর রেল সামগ্রী পোস্ট করে?
জিশান

5

রুবি ১.৮ এ পার্সেডেট মডিউলটি এই এবং অন্যান্য অনেক তারিখ / সময় ফর্ম্যাটগুলিকে রূপান্তর করবে। যাইহোক, এটি বছর এবং সময়ের মধ্যে কোলনের সাথে কৌতূহলপূর্ণভাবে আচরণ করে না। ধরে নিচ্ছি যে কোলন একটি টাইপো এবং আসলে একটি স্থান, তারপর:

#!/usr/bin/ruby1.8

require 'parsedate'

s = "30/Nov/2009 16:29:30 +0100"
p Time.mktime(*ParseDate.parsedate(s))    # =>  Mon Nov 30 16:29:30 -0700 2009

1

আপনি একটি নির্দিষ্ট সময় অঞ্চল দিয়ে একটি তারিখের সময়ের স্ট্রিংকেও পার্স করতে পারেন:

zone = "Pacific Time (US & Canada)"
ActiveSupport::TimeZone[zone].parse("2020-05-24 18:45:00")
=> Sun, 24 May 2020 18:45:00 PDT -07:00
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.