diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -1529,7 +1529,8 @@ def import_(ui, repo, patch1, *patches, 
                 finally:
                     files = patch.updatedir(ui, repo, files)
                 if not opts.get('no_commit'):
-                    n = repo.commit(files, message, user, date)
+                    n = repo.commit(files, message, opts.get('user') or user,
+                                    opts.get('date') or date)
                     if opts.get('exact'):
                         if hex(n) != nodeid:
                             repo.rollback()
@@ -2901,8 +2902,9 @@ table = {
           ('', 'exact', None,
            _('apply patch to the nodes from which it was generated')),
           ('', 'import-branch', None,
-           _('Use any branch information in patch (implied by --exact)'))] + commitopts,
-         _('hg import [-p NUM] [-m MESSAGE] [-f] PATCH...')),
+           _('Use any branch information in patch (implied by --exact)'))] +
+         commitopts + commitopts2,
+         _('hg import [OPTION]... PATCH...')),
     "incoming|in":
         (incoming,
          [('M', 'no-merges', None, _('do not show merges')),
diff --git a/tests/test-import b/tests/test-import
--- a/tests/test-import
+++ b/tests/test-import
@@ -32,6 +32,13 @@ hg --cwd a diff -r0:1 > tip.patch
 hg --cwd b import -mpatch ../tip.patch
 rm -r b
 
+echo % import of plain diff with specific date and user
+hg clone -r0 a b
+hg --cwd a diff -r0:1 > tip.patch
+hg --cwd b import -mpatch -d '1 0' -u 'user@nowhere.net' ../tip.patch
+hg -R b tip -pv
+rm -r b
+
 echo % import of plain diff should be ok with --no-commit
 hg clone -r0 a b
 hg --cwd a diff -r0:1 > tip.patch
diff --git a/tests/test-import.out b/tests/test-import.out
--- a/tests/test-import.out
+++ b/tests/test-import.out
@@ -31,6 +31,30 @@ adding file changes
 added 1 changesets with 2 changes to 2 files
 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
 applying ../tip.patch
+% import of plain diff with specific date and user
+requesting all changes
+adding changesets
+adding manifests
+adding file changes
+added 1 changesets with 2 changes to 2 files
+2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+applying ../tip.patch
+changeset:   1:ca68f19f3a40
+tag:         tip
+user:        user@nowhere.net
+date:        Thu Jan 01 00:00:01 1970 +0000
+files:       a
+description:
+patch
+
+
+diff -r 80971e65b431 -r ca68f19f3a40 a
+--- a/a	Thu Jan 01 00:00:00 1970 +0000
++++ b/a	Thu Jan 01 00:00:01 1970 +0000
+@@ -1,1 +1,2 @@
+ line 1
++line 2
+
 % import of plain diff should be ok with --no-commit
 requesting all changes
 adding changesets