diff --git a/mercurial/commands.py b/mercurial/commands.py
index 570f87422f544d72807457a5ed703983acf668a8_bWVyY3VyaWFsL2NvbW1hbmRzLnB5..b629397ca15f7ad3f5496c230d066315471963a5_bWVyY3VyaWFsL2NvbW1hbmRzLnB5 100644
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -2331,8 +2331,6 @@
 
     if precursor is not None:
         metadata = {}
-        if 'date' in opts:
-            metadata['date'] = opts['date']
         metadata['user'] = opts['user'] or ui.username()
         succs = tuple(parsenodeid(succ) for succ in successors)
         l = repo.lock()
@@ -2340,4 +2338,9 @@
             tr = repo.transaction('debugobsolete')
             try:
                 try:
+                    date = opts.get('date')
+                    if date:
+                        date = util.parsedate(date)
+                    else:
+                        date = None
                     repo.obsstore.create(tr, parsenodeid(precursor), succs,
@@ -2343,5 +2346,6 @@
                     repo.obsstore.create(tr, parsenodeid(precursor), succs,
-                                         opts['flags'], metadata=metadata)
+                                         opts['flags'], date=date,
+                                         metadata=metadata)
                     tr.close()
                 except ValueError, exc:
                     raise util.Abort(_('bad obsmarker input: %s') % exc)