diff --git a/src/time_object.cpp b/src/time_object.cpp index 930fe6eba..2cc7b0f34 100644 --- a/src/time_object.cpp +++ b/src/time_object.cpp @@ -101,7 +101,7 @@ TimeObject *TimeObject::utc(Env *env, Value year, Optional month, Optiona int seconds = timegm(&result->m_time); result->m_mode = Mode::UTC; result->m_integer = seconds; - if (subsec_arg) { + if (subsec_arg && !subsec_arg.value().is_nil()) { auto subsec = subsec_arg.value(); if (subsec.is_integer()) { auto integer = subsec.integer(); diff --git a/test/natalie/time_test.rb b/test/natalie/time_test.rb index eedf33a27..ee488d573 100644 --- a/test/natalie/time_test.rb +++ b/test/natalie/time_test.rb @@ -126,6 +126,14 @@ def time t.nsec.should == 1 end end + + context 'with a nil microseconds argument' do + it 'returns a time with no subseconds' do + t = Time.utc(1970, 1, 1, 0, 0, 0, nil) + t.should be_an_instance_of(Time) + t.nsec.should == 0 + end + end end describe '#+' do