# [Stax](https://github.com/tomtheisen/stax), 54 [bytes](https://github.com/tomtheisen/stax/blob/master/docs/packed.md#packed-stax)

    ▀♂♂┼╕Qá◙à*ä∙Φò►⌠╨Ns↔║►πîÇ∙cI≡ªb?δ♪9gΓ╕┬≥‼⌡Öå01:♪EoE╘≡ë

[Run and debug it](https://staxlang.xyz/#p=df0b0bc5b851a00a852a84f9e89510f4d04e731dba10e38c80f96349f0a6623feb0d3967e2b8c2f213f5998630313a0d456f45d4f089&i=1%0A59%0A60%0A43200%0A86401%0A1815603%0A1426636800&a=1&m=2)

Here's the unpacked, ungolfed, ascii representation of the same program.

	                         	stack starts with total seconds
	c60/                     	push total minutes to stack
	c60/                     	... hours 
	c24/                     	... days
	Yc7/                     	... weeks
	y31/                     	... months
	y365/                    	... years
	L                        	make a list out of all the calculated time units
	`)sQP(dr'pk,oV4?_HIFD?x`j	compressed literal for singular forms of unit names
	\                        	zip totals with names
	rF                       	foreach pair of total and name (in reverse orer)
	  h!C                    	skip if the current total is falsey (0)
	  _J                     	join the total and unit name with a space
	  's_1=T+                	concat 's' unless the total is one

Following execution, since there's no other output, the top of the stack is printed implicitly.

[Run this one](https://staxlang.xyz/#c=+++++++++++++++++++++++++%09stack+starts+with+total+seconds%0Ac60%2F+++++++++++++++++++++%09push+total+minutes+to+stack%0Ac60%2F+++++++++++++++++++++%09...+hours+%0Ac24%2F+++++++++++++++++++++%09...+days%0AYc7%2F+++++++++++++++++++++%09...+weeks%0Ay31%2F+++++++++++++++++++++%09...+months%0Ay365%2F++++++++++++++++++++%09...+years%0AL++++++++++++++++++++++++%09make+a+list+out+of+all+the+calculated+time+units%0A%60%29sQP%28dr%27pk,oV4%3F_HIFD%3Fx%60j%09compressed+literal+for+singular+forms+of+unit+names%0A%5C++++++++++++++++++++++++%09zip+totals+with+names%0ArF+++++++++++++++++++++++%09foreach+pair+of+total+and+name+%28in+reverse+orer%29%0A++h%21C++++++++++++++++++++%09skip+if+the+current+total+is+falsey+%280%29%0A++_J+++++++++++++++++++++%09join+the+total+and+unit+name+with+a+space%0A++%27s_1%3DT%2B&i=1%0A59%0A60%0A43200%0A86401%0A1815603%0A1426636800&a=1&m=2)