summaryrefslogtreecommitdiffstats
path: root/virt-top
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2011-03-08 11:21:49 +0000
committerRichard W.M. Jones <rjones@redhat.com>2011-03-08 11:21:49 +0000
commitdc0e217390132f7e76a4d9c0a8a81a9556d19081 (patch)
tree3ebbdb1eacfa05867db2fed2e84fb0d3eef80254 /virt-top
parentad0221b4eed02049674ca4584fa4c585f0f3203f (diff)
downloadvirt-top-dc0e217390132f7e76a4d9c0a8a81a9556d19081.tar.gz
virt-top-dc0e217390132f7e76a4d9c0a8a81a9556d19081.tar.xz
virt-top-dc0e217390132f7e76a4d9c0a8a81a9556d19081.zip
Fix --end-time option with absolute times.
Assume the user enters a local time, and convert it to UTC. This also adds some clarifying comments to the relative time code (but doesn't change that code). Note that the obsolete Calendar1 code is *not* updated by this change.
Diffstat (limited to 'virt-top')
-rwxr-xr-xvirt-top/virt_top_calendar2.ml26
1 files changed, 18 insertions, 8 deletions
diff --git a/virt-top/virt_top_calendar2.ml b/virt-top/virt_top_calendar2.ml
index cb0ebec..cc82eec 100755
--- a/virt-top/virt_top_calendar2.ml
+++ b/virt-top/virt_top_calendar2.ml
@@ -38,18 +38,28 @@ fun time ->
Calendar.Period.make 0 0 0 hh mm ss
) else (* +seconds *)
Calendar.Period.second (int_of_string period) in
- (* Add it as an offset from the current time. *)
+ (* Add it as an offset from the current time.
+ *
+ * Note that the default for the Calendar library is to return
+ * Calendar.now in the UTC time zone, which is in fact what we
+ * need below.
+ *)
Calendar.add (Calendar.now ()) period
) else (
- if String.contains time '-' then (* YYYY-MM-DD HH:MM:SS *)
- Printer.CalendarPrinter.from_string time
- else ( (* HH:MM:SS *)
- let time = Printer.TimePrinter.from_string time in
- Calendar.create (Date.today ()) time
- )
+ let cal =
+ if String.contains time '-' then (* YYYY-MM-DD HH:MM:SS *)
+ Printer.CalendarPrinter.from_string time
+ else ( (* HH:MM:SS *)
+ let time = Printer.TimePrinter.from_string time in
+ Calendar.create (Date.today ()) time
+ ) in
+ (* Assume the user has entered a local time. Convert it to
+ * UTC time zone which is what we need below. (RHBZ#680344)
+ *)
+ Calendar.convert cal Time_Zone.Local Time_Zone.UTC
) in
- eprintf "end time: %s\n" (Printer.CalendarPrinter.to_string cal);
+ eprintf "end time (UTC): %s\n" (Printer.CalendarPrinter.to_string cal);
(* Convert to a time_t. Note that we compare this against
* Unix.gettimeofday in the main module, so this must be returned as