TimeSpan don't support years so how do I deal with it? Is there could be smarter solution?
I would propose an alternative method of calculating your time, using seconds and DateTimes:

open System

let startDate = DateTime.Parse ("2012-09-12")
let now = DateTime.Now;
let currentRuntime = (now - startDate).TotalSeconds
let timePerGig = currentRuntime / 7.7;
let tenDate = startDate + TimeSpan.FromSeconds (10.0 * timePerGig);


With that done, you can do whatever you like to represent the final date relative to the current date.

An overly simplistic example is as follows:

printf "%d years %d months %d days" (finalDate.Year - now.Year) (finalDate.Month - now.Month) (finalDate.Day - now.Day)


Of course, you would have to account for roll-over for days and months in any final piece of code, but it illustrates how you could pull the date parts back out.