রেল বিন্যাসের তারিখ


126

আমি একটি এপিআইতে একটি তারিখ পোস্ট করছি এবং প্রয়োজনীয় ফর্ম্যাটটি নিম্নরূপ:

2014-12-01T01:29:18

আমি মডেলের কাছ থেকে এর মতো তারিখ পেতে পারি:

Model.created_at.to_s

যে ফিরে:

2014-12-01 01:29:18 -0500

টির সাথে প্রয়োজনীয় ফর্ম্যাটটির মতো এবং -0500 মুছে ফেলার জন্য আমি কীভাবে রেল বা রুবি ব্যবহার করতে পারি?

উত্তর:


227

ব্যবহার

Model.created_at.strftime("%FT%T")

কোথায়,

%F - The ISO 8601 date format (%Y-%m-%d)
%T - 24-hour time (%H:%M:%S)

নীচে কয়েকটি ঘন ঘন ব্যবহৃত দরকারী তালিকা Dateএবং Timeফর্ম্যাটগুলির কয়েকটি যা আপনি strftimeপদ্ধতিতে নির্দিষ্ট করতে পারেন :

Date (Year, Month, Day):
  %Y - Year with century (can be negative, 4 digits at least)
          -0001, 0000, 1995, 2009, 14292, etc.
  %C - year / 100 (round down.  20 in 2009)
  %y - year % 100 (00..99)

  %m - Month of the year, zero-padded (01..12)
          %_m  blank-padded ( 1..12)
          %-m  no-padded (1..12)
  %B - The full month name (``January'')
          %^B  uppercased (``JANUARY'')
  %b - The abbreviated month name (``Jan'')
          %^b  uppercased (``JAN'')
  %h - Equivalent to %b

  %d - Day of the month, zero-padded (01..31)
          %-d  no-padded (1..31)
  %e - Day of the month, blank-padded ( 1..31)

  %j - Day of the year (001..366)

Time (Hour, Minute, Second, Subsecond):
  %H - Hour of the day, 24-hour clock, zero-padded (00..23)
  %k - Hour of the day, 24-hour clock, blank-padded ( 0..23)
  %I - Hour of the day, 12-hour clock, zero-padded (01..12)
  %l - Hour of the day, 12-hour clock, blank-padded ( 1..12)
  %P - Meridian indicator, lowercase (``am'' or ``pm'')
  %p - Meridian indicator, uppercase (``AM'' or ``PM'')

  %M - Minute of the hour (00..59)

  %S - Second of the minute (00..59)

  %L - Millisecond of the second (000..999)
  %N - Fractional seconds digits, default is 9 digits (nanosecond)
          %3N  millisecond (3 digits)
          %6N  microsecond (6 digits)
          %9N  nanosecond (9 digits)
          %12N picosecond (12 digits)

জন্য সম্পূর্ণ তালিকা জন্য ফরম্যাটের strftimeপদ্ধতি অনুগ্রহ করে পরিদর্শন করুন APIDock


1
মহান কাজ!! স্ট্যাটিক টি সন্নিবেশ কীভাবে কাজ করবে তা আমি ভাবতে পারিনি, তবে এই কৌশলটি কাজ করে ....
হ্যাকারকর্মা

একটি সাধারণ ফর্ম্যাটের শর্টকাট:% D - (% m /% d /% y) এর
সমান

1
ব্যবহার করুন %Aযদি আপনি সপ্তাহের দিন, যেমন "বুধবার", বা চান %a"বুধ" জন্য
joeytwiddle

71

এটা চেষ্টা কর:

created_at.strftime('%FT%T')

এটি একটি সময় বিন্যাসকরণ ফাংশন যা আপনাকে তারিখের স্ট্রিং উপস্থাপনা উপস্থাপনের জন্য একটি উপায় সরবরাহ করে। ( http://ruby-doc.org/core-2.2.1/Time.html#method-i-strftime )।

APIdock থেকে:

%Y%m%d           => 20071119                  Calendar date (basic)
%F               => 2007-11-19                Calendar date (extended)
%Y-%m            => 2007-11                   Calendar date, reduced accuracy, specific month
%Y               => 2007                      Calendar date, reduced accuracy, specific year
%C               => 20                        Calendar date, reduced accuracy, specific century
%Y%j             => 2007323                   Ordinal date (basic)
%Y-%j            => 2007-323                  Ordinal date (extended)
%GW%V%u          => 2007W471                  Week date (basic)
%G-W%V-%u        => 2007-W47-1                Week date (extended)
%GW%V            => 2007W47                   Week date, reduced accuracy, specific week (basic)
%G-W%V           => 2007-W47                  Week date, reduced accuracy, specific week (extended)
%H%M%S           => 083748                    Local time (basic)
%T               => 08:37:48                  Local time (extended)
%H%M             => 0837                      Local time, reduced accuracy, specific minute (basic)
%H:%M            => 08:37                     Local time, reduced accuracy, specific minute (extended)
%H               => 08                        Local time, reduced accuracy, specific hour
%H%M%S,%L        => 083748,000                Local time with decimal fraction, comma as decimal sign (basic)
%T,%L            => 08:37:48,000              Local time with decimal fraction, comma as decimal sign (extended)
%H%M%S.%L        => 083748.000                Local time with decimal fraction, full stop as decimal sign (basic)
%T.%L            => 08:37:48.000              Local time with decimal fraction, full stop as decimal sign (extended)
%H%M%S%z         => 083748-0600               Local time and the difference from UTC (basic)
%T%:z            => 08:37:48-06:00            Local time and the difference from UTC (extended)
%Y%m%dT%H%M%S%z  => 20071119T083748-0600      Date and time of day for calendar date (basic)
%FT%T%:z         => 2007-11-19T08:37:48-06:00 Date and time of day for calendar date (extended)
%Y%jT%H%M%S%z    => 2007323T083748-0600       Date and time of day for ordinal date (basic)
%Y-%jT%T%:z      => 2007-323T08:37:48-06:00   Date and time of day for ordinal date (extended)
%GW%V%uT%H%M%S%z => 2007W471T083748-0600      Date and time of day for week date (basic)
%G-W%V-%uT%T%:z  => 2007-W47-1T08:37:48-06:00 Date and time of day for week date (extended)
%Y%m%dT%H%M      => 20071119T0837             Calendar date and local time (basic)
%FT%R            => 2007-11-19T08:37          Calendar date and local time (extended)
%Y%jT%H%MZ       => 2007323T0837Z             Ordinal date and UTC of day (basic)
%Y-%jT%RZ        => 2007-323T08:37Z           Ordinal date and UTC of day (extended)
%GW%V%uT%H%M%z   => 2007W471T0837-0600        Week date and local time and difference from UTC (basic)
%G-W%V-%uT%R%:z  => 2007-W47-1T08:37-06:00    Week date and local time and difference from UTC (extended)

31

এটির জন্য একটি আরম্ভকারী তৈরি করুন:

# config/initializers/time_formats.rb

এটিতে এর মতো কিছু যুক্ত করুন:

Time::DATE_FORMATS[:custom_datetime] = "%d.%m.%Y"

এবং তারপরে এটি নিম্নলিখিত উপায়ে ব্যবহার করুন:

post.updated_at.to_s(:custom_datetime)

This এটি কাজ করার জন্য আপনাকে রেল সার্ভার পুনরায় চালু করতে হবে।

আরও তথ্যের জন্য ডকুমেন্টেশন চেক করুন: http://api.rubyonrails.org/v5.1/classes/DateTime.html#method-i-to_formatted_s


1
এই কাজটি পেতে আমাকে ডেভলপমেন্ট সার্ভারটি পুনরায় চালু করতে হয়েছিল।
আলী হারিস

এটির পরিপূরক হিসাবে: "আপনার নিজস্ব সময়কালীন ফর্ম্যাটগুলি # টু_ফর্ম্যাট্টেড_এস এ যুক্ত করা হচ্ছে" ( api.rubyonrails.org/classes/… )
জিওভান্নি বেনুসি

16

যেহেতু i18n পাগল কোর থেকে শুরু বৈশিষ্ট্য সংস্করণ 2.2 আপনি তার ব্যবহার করতে পারেন স্থানীয় ভাষায় লিখুন -method। পূর্বে বর্ণিত স্ট্রফটাইম % -ভেরিয়েবল প্রয়োগ করে config/locales/en.ymlআপনি আপনার ক্ষেত্রে পছন্দসই বিন্যাসটি (বা যে কোনও ভাষা) এর অধীনে নির্দিষ্ট করতে পারেন :

time:
  formats:
    default: '%FT%T'

অথবা আপনি যদি কয়েকটি নির্দিষ্ট স্থানে এই ধরণের বিন্যাস ব্যবহার করতে চান তবে আপনি এটিকে এর মতো চলক হিসাবে উল্লেখ করতে পারেন

time:
  formats:
    specific_format: '%FT%T'

এর পরে আপনি আপনার মতামতগুলিতে এটি ব্যবহার করতে পারেন:

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