Now I think #1, or some variation, is the best way, just because literally, years are not on the same level as months are not on the same level as days. It's a little bewildering to parse sometimes, but I think the peace of mind is worth it.
For transforming, I've been using the XSLT...