That just gives you the date/time, not a duration.
$asctime(983489392,yyyy mm dd nn ss)
2001 03 01 29 52
31 years, 1 month, 4 weeks, 23 hours, 29 minutes, and 52 seconds
If you subtracted years from 1970, you'd be right for years, but months are still wrong.
Even setting $datexpander for the same parts as you used:
31 years, 1 month, 28 days, 1,409 minutes, and 52 seconds
Note that there are that many minutes, because you're not displaying the hours and it's not a full day's worth of minutes.
Also, $datexpander lets you handle larger durations than $asctime will. A word of warning... once you're past about 200 years, $datexpander will take a long time to calculate the result and will freeze you while doing so. If enough wanted it to work with hundreds/thousands of years, then I might consider optimizing the year calculations to make that faster.
One final note: The output of $datexpander will change based on WHEN you use it due to the number of days in the month.