The constructor with a string argument isn't implemented yet, but this implements the other variants. The timestamp constructor doens't handle negative timestamps correctly. Out-of-bound and invalid arguments aren't handled correctly.