রেলের অন রুবেলে ডেটটাইমকে সাধারণ তারিখে রূপান্তর করুন


114

আমার কাছে ডিবিতে ডেটটাইম কলাম রয়েছে যা আমি ব্যবহারকারীদের কাছে দেখানোর সময় একটি সরল তারিখে রূপান্তর করতে চাই।

আমি এটা কিভাবে করবো?

Def প্রদর্শিত_ তারিখ
  # থেকে_ তারিখের অস্তিত্ব নেই, তবে আমি যা খুঁজছি
  স্ব.ডেট || self.exif_date_time_original.to_date
শেষ

আপনি কি শুধু এটি ফর্ম্যাট করতে চান?
পিয়ার অ্যালান

না, আমি একটি তারিখ অবজেক্ট তৈরি করতে চাই
কলিমার্কো

উফফফ .. বোকা প্রশ্ন! to_date অস্তিত্ব! দুঃখিত :(
কলিমার্কো

উত্তর:


165

DateTime#to_date অ্যাক্টিভসপোর্টের সাথে উপস্থিত রয়েছে:

$ irb
>> DateTime.new.to_date
NoMethodError: undefined method 'to_date' for #<DateTime: -1/2,0,2299161>
    from (irb):1

>> require 'active_support/core_ext'
=> true

>> DateTime.new.to_date
=> Mon, 01 Jan -4712

এটি এমন লজ্জার বিষয় যা .to_date()স্ট্যান্ডার্ড রুবিতে উপস্থিত নেই তাই আমাদের কাজ করতে হবে। ডেটটাইম থেকে তারিখে রূপান্তর করা সঠিক টাইমজোন ট্রট স্ট্রিং (!!!) এর সাথে মার্জিত নয়। ডেটটাইম এবং তারিখের ইন্টার্নালগুলি বোঝা সহজ নয়। শুধু ছত্রভঙ্গ, উপেক্ষা! :-)
নোটলিস্ট

@ নোটিনলিস্টে রূলে সম্পূর্ণ রচনা লেখা আছে, তাই আপনি সম্ভবত_ডেট () পদ্ধতিটি খুঁজে পেতে রেলগুলি এপিআইয়ের দিকে নজর রাখতে পারেন। এটি আপনাকে যে মডিউলটিতে রয়েছে তা বলবে, যা আপনি নিজের কোডে ডেটটাইম অবজেক্টগুলির জন্য অন্তর্ভুক্ত করতে পারেন
এরিক হু

9
.to_date রুবি ১.৯.২ এ যুক্ত করা হয়েছিল।
জোশাইদান

7
@ মিশেল আপনি ভুল। টু_ডেট ফাংশন ডকুমেন্টিং রুবি ১.৯.২ এর স্ট্যান্ডার্ড লাইব্রেরির জন্য ডকুমেন্টেশন এখানে রয়েছে। রুবি
স্ট্ডলিব

60

হ্যালো collimarco :) আপনি রুবি ব্যবহার করতে পারেন strftime উর নিজের তারিখ / সময় প্রদর্শন তৈরি করতে পদ্ধতি।

টাইম.স্ট্রফটাইম (স্ট্রিং) => স্ট্রিং

  %a - The abbreviated weekday name (``Sun'')
  %A - The  full  weekday  name (``Sunday'')
  %b - The abbreviated month name (``Jan'')
  %B - The  full  month  name (``January'')
  %c - The preferred local date and time representation
  %d - Day of the month (01..31)
  %H - Hour of the day, 24-hour clock (00..23)
  %I - Hour of the day, 12-hour clock (01..12)
  %j - Day of the year (001..366)
  %m - Month of the year (01..12)
  %M - Minute of the hour (00..59)
  %p - Meridian indicator (``AM''  or  ``PM'')
  %S - Second of the minute (00..60)
  %U - Week  number  of the current year,
          starting with the first Sunday as the first
          day of the first week (00..53)
  %W - Week  number  of the current year,
          starting with the first Monday as the first
          day of the first week (00..53)
  %w - Day of the week (Sunday is 0, 0..6)
  %x - Preferred representation for the date alone, no time
  %X - Preferred representation for the time alone, no date
  %y - Year without a century (00..99)
  %Y - Year with century
  %Z - Time zone name
  %% - Literal ``%'' character

   t = Time.now
   t.strftime("Printed on %m/%d/%Y")   #=> "Printed on 04/09/2003"
   t.strftime("at %I:%M%p")            #=> "at 08:56AM"

20

রুবি ১.৯.২ এবং তার উপরে তারা ডেটটাইমে একটি টু ডেট ফাংশন যুক্ত করেছে:

http://ruby-doc.org/stdlib-1.9.2/libdoc/date/rdoc/DateTime.html#method-i-to_date

এই উদাহরণ পদ্ধতিটি পূর্ববর্তী সংস্করণগুলিতে 1.8.7 এর মতো উপস্থিত বলে মনে হয় না।


আমি যদি বিস্তারিতভাবে সক্রিয় সমর্থন অন্তর্ভুক্ত করি তবেই।
মাইকেল ডুরান্ট

3
না, রুবি ১.৯.২ এবং তার উপরে আপনাকে অ্যাক্টিভসপোর্ট অন্তর্ভুক্ত করতে হবে না। আপনি আমার উত্তরে দেখতে পাচ্ছেন, আমি ১.৯.২ এর জন্য মূল রুবি stdlib ডক্সের একটি লিঙ্ক অন্তর্ভুক্ত করেছি।
জোশাইদান


0

আমি সম্প্রতি এই প্রক্রিয়াটি সহজ করার জন্য এবং আপনার মতামত পরিষ্কার করার জন্য ইত্যাদি রত্ন রচনা করেছি etc.

এটি এখানে দেখুন: http://github.com/platform45/easy_dates


0

প্রবেশকে প্রথমে একটি স্ট্রিংয়ে রূপান্তর করার চেষ্টা করুন। যতক্ষণ ডাটাবেস কলামের ধরণ একটি তারিখ হিসাবে এটি একটি তারিখ হিসাবে গঠন করা হবে।

স্ব.ডেট || self.exif_date_time_original.to_s

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