Skip to content
Jens Jäger

Measure your working time on windows

This post is part of the archive. It was written years ago, so some of the tools, versions and links may be outdated.

For measure working time on windows I wrote a little script. It calculates the time since the last login. The output of the script looks like this:

Login:        10:10
Now:          18:13
======================
Working time: 8 h 3 m

The script is written in Ruby and runs under cygwin. I saved the script in a folder tools in my homedir and have the following alias in my .bashrc:

alias wt='~/tools/workingtime.rb'

So finally the script looks like this:

#!/usr/bin/ruby
HOURS_PER_DAY = 24
MINUTES_PER_HOUR = 60
SEC_PER_MINUTE = 60 
times = []

#get times from windows systeminfo
#Systembetriebszeit:                     0 Tage, 0 Stunden, 10 Minuten, 0 Sekunden
uptime_string = `systeminfo | grep Systembetriebszeit`
uptime_string.slice!(0..28)
time_strings = uptime_string.split(',')
time_strings.each do |s|
times < < s.gsub(/[A-Za-z\s]+/, '')
end

#do some calculation
seconds = times[0].to_i *  HOURS_PER_DAY * MINUTES_PER_HOUR * SEC_PER_MINUTE
seconds = seconds + times[1].to_i * MINUTES_PER_HOUR * SEC_PER_MINUTE
seconds = seconds + times[2].to_i * SEC_PER_MINUTE
seconds = seconds + times[3].to_i
now = Time.now
login = now - seconds
if (times[0].to_i != 0)
  times[1] = times[1].to_i + times[0] * HOURS_PER_DAY  	
end

#print it
puts login.strftime("Login:        %H:%M")
puts now.strftime("Now:          %H:%M")
puts "======================"
puts "Working time: #{times[1].to_i} h #{times[2].to_i} m"

Known issues:

The script is based on the windows command systeminfo. Systeminfo returns values in the language of the operating system. So this works only with a german windows. Replace "Systembetriebszeit" with whatever your systeminfo command returns for the uptime.

Update:

Workingtime.rb moves to github. Follow the installation instructions there.