내가 Time
물건을 얻은 경우 :
Time.now
나중에 동일한 줄로 다른 개체를 인스턴스화합니다. 몇 밀리 초가 지 났는지 어떻게 알 수 있습니까? 두 번째 개체는 같은 분, 다음 분 또는 몇 시간 동안 생성 될 수 있습니다.
답변
이미 언급했듯이 Time
숫자 (또는 부동 소수점) 값인 것처럼 객체 . 이러한 작업은 쉽게 변환 할 수있는 두 번째 해상도를 생성합니다.
예를 들면 :
def time_diff_milli(start, finish)
(finish - start) * 1000.0
end
t1 = Time.now
# arbitrary elapsed time
t2 = Time.now
msecs = time_diff_milli t1, t2
잘라낼 지 여부를 결정해야합니다.
답변
다음과 같이 위의 솔루션에 약간의 구문 설탕을 추가 할 수 있습니다.
class Time
def to_ms
(self.to_f * 1000.0).to_i
end
end
start_time = Time.now
sleep(3)
end_time = Time.now
elapsed_time = end_time.to_ms - start_time.to_ms # => 3004
답변
대답이 잘못 선택되었다고 생각합니다. 그 방법은 밀리 초가 아닌 초를 제공합니다.
t = Time.now.to_f
=> 1382471965.146
여기에서는 부동 값이 밀리 초라고 가정합니다.
답변
밀리 초 단위로 시간을 얻으려면를 추가 .round(3)
하는 것이 더 좋으므로 경우에 따라 더 정확할 것입니다.
puts Time.now.to_f # => 1453402722.577573
(Time.now.to_f.round(3)*1000).to_i # => 1453402722578
답변
ezpz의 대답은 거의 완벽하지만 조금 더 추가 할 수 있기를 바랍니다.
Geo는 시간에 대해 밀리 초 단위로 물었습니다. 이것은 정수량처럼 들리며 부동 소수점 땅을 우회하지 않을 것입니다. 따라서 내 접근 방식은 다음과 같습니다.
irb(main):038:0> t8 = Time.now
=> Sun Nov 01 15:18:04 +0100 2009
irb(main):039:0> t9 = Time.now
=> Sun Nov 01 15:18:18 +0100 2009
irb(main):040:0> dif = t9 - t8
=> 13.940166
irb(main):041:0> (1000 * dif).to_i
=> 13940
정수 1000을 곱하면 분수가 완벽하게 보존되며 조금 더 빠를 수 있습니다.
날짜와 시간을 다루는 경우 DateTime 클래스 를 사용해야 할 수 있습니다 . 이것은 유사하게 작동하지만 변환 계수는 24 * 3600 * 1000 = 86400000입니다. 입니다.
DateTime의 strptime 및 strftime 함수는 날짜 / 시간 문자열 (예 : 로그로 /부터)을 구문 분석하고 형식화하는 데 매우 유용합니다. 알아두면 편리한 것은 다음과 같습니다.
-
이러한 함수의 형식화 문자 (% H, % M, % S, …)는 Unix / Linux 시스템에서 볼 수있는 C 함수의 경우와 거의 동일합니다. 과
-
몇 가지 더 있습니다. 특히 % L 은 밀리 초를 수행합니다!
답변
DateTime.now.strftime("%Q")
사용 예 :
>> DateTime.now.strftime("%Q")
=> "1541433332357"
>> DateTime.now.strftime("%Q").to_i
=> 1541433332357
답변
Time.now.to_f 는 당신을 도울 수 있지만 초를 반환합니다.
일반적으로 벤치 마크로 작업 할 때 I :
- 현재 시간을 변수에 넣으십시오.
- 테스트 할 블록을 삽입하십시오.
- 현재 시간을 변수에 넣고 이전 현재 시간 값을 뺍니다.
아주 간단한 과정이라서 정말이 질문을하신 건지 모르겠네요 …
