<span class="Apple-style-span" style="border-collapse: collapse; "><div>Hi folks,</div><div><br></div><div>I had some code using the oldtime package, and want to convert it to use the time package.</div><div><br></div><div>
One of the things I need to do is calculate the number of seconds since midnight. The easy part is getting a TimeDiff result:</div><div><br></div><div>utc &lt;- getCurrentTime</div><div>tz &lt;- getCurrentTimeZone</div><div>
let td = timeOfDayToTime $ localTimeOfDay $ utcToLocalTime tz utc</div><div><br></div><div>Now td is a TimeDiff representation of the number of seconds since midnight. It prints nicely, but I&#39;m having a heck of a time figuring out how to truncate it to an Int.</div>
<div><br></div><div>The floor function is only supported by the RealFrac class. Although TimeDiff has an instance of RealFrac and Fractional, it doesn&#39;t have an instance of RealFrac. I looked up the various to* and from* functions and have come up short. fromEnum yields an Int but it&#39;s the wrong value.&nbsp;I know I could use show and then use readS to get an Integer, or use formatTime (and reparse that), but that&#39;s a hack.</div>
<div><br></div><div>I can convert it to a TimeOfDay which gives me hours, minutes, and seconds, but then I have to do arithmetic on it, and the seconds are of type Pico, which I can&#39;t call floor on either. I can convert it to a Rational via timeOfDayToDayFraction, but a TimeDiff is already a Rational those don&#39;t have floor.</div>
<div><br></div><div>What am I missing? There has got to be an easy way to count seconds!</div><div><br></div><div>Thanks,</div><div>Lyle</div><div><br></div></span>