diff --git a/app/models/regular_event.rb b/app/models/regular_event.rb index 0689f9447b9..e96fbc5f1da 100644 --- a/app/models/regular_event.rb +++ b/app/models/regular_event.rb @@ -167,11 +167,8 @@ def nth_wday(date) end def parse_event_time(event_date, event_time) - tz = ActiveSupport::TimeZone['Asia/Tokyo'] - - time = event_time ? event_time.strftime('%H:%M') : '00:00' - date_time = DateTime.parse("#{event_date} #{time}") - - tz.local_to_utc(date_time) + str_date = event_date.strftime('%F') + str_time = event_time.strftime('%R') + Time.zone.parse([str_date, str_time].join(' ')) end end diff --git a/test/models/regular_event_test.rb b/test/models/regular_event_test.rb index cc138367e0b..a63ccbe0e5c 100644 --- a/test/models/regular_event_test.rb +++ b/test/models/regular_event_test.rb @@ -136,13 +136,15 @@ class RegularEventTest < ActiveSupport::TestCase assert_equal wednesday_for_year, scheduled_dates end - test '#format_event_date' do + test '#transform_for_subscription' do travel_to Time.zone.local(2024, 8, 5, 23, 0, 0) do - regular_event = regular_events(:regular_event34) + regular_event = RegularEvent.new(start_at: '21:00', end_at: '22:00') event_date = Date.new(2024, 8, 7) transformed_regular_event = regular_event.transform_for_subscription(event_date) - assert_equal DateTime.new(2024, 8, 7, 21, 0, 0, '+09:00'), transformed_regular_event.start_on - assert_equal DateTime.new(2024, 8, 7, 22, 0, 0, '+09:00'), transformed_regular_event.end_on + + assert_equal Time.zone.parse('2024-08-07 21:00'), transformed_regular_event.start_on + assert_equal Time.zone.parse('2024-08-07 22:00'), transformed_regular_event.end_on + assert_equal 'JST', transformed_regular_event.start_on.zone, 'タイムゾーンが日本標準時(Japan Standard Time)と異なります' end end