少し前にSONYがGO FOR ITというソフトウェアスペシャリスト認定コンテストを開催しました
http://www.sony.co.jp/SonyInfo/Jobs/newgrads/sus/go_for_it.html 
僕は応募資格を満たしていなかったので応募していないですが 、面白そうだったのでこの問題の一つ
人生の時計を解いてみました。
問題は以下のとおり。

1) 人生の時計

あなたの一生を24時間にたとえると今日は何時何分何秒ですか?
ただしあなたはあなたの誕生日(a年b月c日)の0時ちょうどに生まれてn歳まで生きる(n歳のときは生きていてn+1歳にはなれない)とし、bとcは一般的な月日の範囲とします。

i) 1990<=a<=2000,n=80のとき、今日は何時何分何秒ですか?
ii) 1900<=a<=2000,n=200のとき、今日は何時何分何秒ですか?

まぁC#でDateTimeを使ったので閏年とかの面倒なコードを書いてないですが…
問題文でいうa,b,c,nを引数に受け取り、24時間にたとえた時刻をTimeSpan型で返すメソッドを作成しました。

public static TimeSpan GetLifeTime(int year, int month, int day, int maxOld)
{
    // 現在時刻の取得
    var now = DateTime.Now;
    
    // 誕生日のインスタンスを生成
    DateTime birthday;
    try
    {
        birthday = new DateTime(year, month, day);
    }
    catch
    {
        throw new ArgumentException("誕生日の指定が不正です");
    }
    // 生きれる年数を足して没年のインスタンスを生成
    var max = birthday.AddYears(maxOld + 1);
    // 現在が誕生日より前、もしくは没年より後なら負のTimeSpanを返す。
    if (now.CompareTo(birthday) < 0 || now.CompareTo(max) > 0) return new TimeSpan(1).Negate();

    // 一生の秒数を取得
    double lifeSeconds = max.Subtract(birthday).TotalSeconds;
    // 生まれてから現在までの秒数を取得
    double secondsSinceBorn = now.Subtract(birthday).TotalSeconds;

    // 一生を24時間にたとえた時の合計秒数を取得
    double timeSeconds = secondsSinceBorn / (lifeSeconds / SecondsPerDay);
    return new TimeSpan(0, 0, (int)Math.Floor(timeSeconds));
}
上の方は値の取得やエラー処理なので、一番重要なのはreturnの前のtimeSecondsに代入する部分ですね。
SecondsPerDayは24*60*60を計算した定数です。24時間を秒に直したものです。
一生の秒数をSecondsPerDayで割ることで、24時間にたとえた場合の1秒は実際の時間で何秒なのかを計算します。
そしてその秒数で、生まれてから現在までの秒数を割ります。これによって一生を24時間にたとえた時の合計秒数を求めます。
端数は切り捨ててます。

このメソッドを呼び出すプログラムを作成。実行してみたのがこんな感じ。
lifeclock1
これを実行したのが2012年3月18日20時頃です。5時59分25秒らしいです。
まだまだ寝てる時間ですね。 

GUIも作ってみたり。 
lifeclock2
 

旅行中の移動時の暇つぶし的な感じでやってましたが楽しかったですね。
では。