복붙노트

[RUBY-ON-RAILS] 포맷 날짜를 레일

RUBY-ON-RAILS

포맷 날짜를 레일

나는 API에 날짜를 게시하고 다음과 같이 필요한 형식은 다음과 같습니다

2014-12-01T01:29:18

그래서 같은 모델에서 날짜를 얻을 수 있습니다 :

Model.created_at.to_s

그 반환 :

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

어떻게 필요한 T와 형식과 -0500을 제거처럼 포맷을 레일 또는 루비를 사용할 수 있습니까?

해결법

  1. ==============================

    1.사용하다

    사용하다

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

    어디,

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

    다음 날짜와 당신의 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에 대한 형식의 전체 목록은

  2. ==============================

    2.이 시도:

    이 시도:

    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)
    
  3. ==============================

    3.이를 위해 초기화를 만듭니다

    이를 위해 초기화를 만듭니다

    # config/initializers/time_formats.rb
    

    그것은이 같은 추가 :

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

    그리고 그것을 다음과 같은 방법을 사용합니다 :

    post.updated_at.to_s(:custom_datetime)
    

    ⚠️ 귀하의 재시작이 작동하지 서버를 레일에 있습니다.

    자세한 내용은 설명서를 참조하십시오 : http://api.rubyonrails.org/v5.1/classes/DateTime.html#method-i-to_formatted_s

  4. ==============================

    4.국제화는 자사의 지역화-방법을 사용할 수 있습니다 버전 2.2에서 시작하여 레일의 핵심 기능이기 때문에. forementioned의 strftime의 %를 적용하여 당신이 원하는 형식을 지정할 수 있습니다 -variables에서 설정 / 로케일 / en.yml (또는 어떤 언어)이 같은 귀하의 경우 :

    국제화는 자사의 지역화-방법을 사용할 수 있습니다 버전 2.2에서 시작하여 레일의 핵심 기능이기 때문에. forementioned의 strftime의 %를 적용하여 당신이 원하는 형식을 지정할 수 있습니다 -variables에서 설정 / 로케일 / en.yml (또는 어떤 언어)이 같은 귀하의 경우 :

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

    당신은 몇 가지 특정 장소에서 형식의이 종류를 사용하려는 경우 또는이 같은 변수로 참조 할 수 있습니다

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

    이처럼 뷰에서 사용할 수있는 후 :

    l(Mode.last.created_at, format: :specific_format)  
    
  5. from https://stackoverflow.com/questions/22255476/rails-formatting-date by cc-by-sa and MIT license