MomentJS is great and offers pretty much everything you need time manipulation wise. That being said, I've spent many hours debugging problems with moment because many operations mutate the 'moment' instance that you're working with.
If you generate some moments and need to reuse them for multiple calculations, you need to constantly clone them.
I wish there was a moment-like library with good performance that's immutable.