As a converter, units are data and do not really belong in code.
You can do some really awesome stuff, however, if you break your units down to "base" components (Length, temperature, Time, ...)
So you might have a database that looks like this:
minute = 1 x Time (where Time is the basic unit of measure for time)
second = time / 60
hour = time * 60
meter = 1 x distance
Klometer = 1000 x distance
...
The nice thing about this is you start to get real flexibilities with formulas. For instance, if I had some info around like the fact that a snail I was watching moved 20 cm in 3 minutes, I could easily feed that to a speed equation (velocity=dist/time) to get a "Root" velocity figure, then request the results in terms of different units (say, miles and hours) so that I instantly get a result in miles per hour.
You even know what info you are missing--like if you give a distance and ask for a velocity, it could respond "You still need a time". Or if you give a distance and velocity it could calculate a time in units of your choice.
Anyway, it's all data. You should probably not even have different classes for distance and time.
I suppose I'd use a fixed set of measurement objects as described above that could be used to look up a conversion (unit name, unit type, conversion factor) like ("Minutes", TIME, 1)
When a user entered a value with a unit (Let's say user enters 3 hours), I'd simply look up the unit ("Hours"), figure out the conversion ( 180, TIME ) and store (180, TIME) somewhere.
When they asked for a readout in minutes, I'd look up the conversion for minutes ("Minutes", TIME, 1) and use the scaling factor (1) to determine that you need to print 180 minutes.
If the user put in a value like 3 hours and asked for a speed in meters/second, you can prompt for a distance (that the user can specify using any distance type) and easily convert to their required output. Converting to the base units and using scaling factors makes nearly all the difficulty go away.
Justification/reasoning:
My assertion that the units and conversion factors shouldn't be specified in code is probably going to be questioned...
My reasoning is that you should NEVER have objects that do not have UNIQUE business logic.
The only difference anywhere between minutes and seconds will be a formula that will only vary in a constant (anywhere minute is used, you could also use second x 60 or hour * (1/60), so that constant (1, 60, 1/60) cannot cause a new class to be created in itself--this would be absolutely criminal.
This is true of all the basic measurement types, none of them have unique business logic.