diff --git a/app/models/invite.rb b/app/models/invite.rb
index ceca046866c5117e1bd3193a8bdba6aa7f84097e..7626f4cfa14b9cdfa033c79eac99c9f2874ceb10 100644
--- a/app/models/invite.rb
+++ b/app/models/invite.rb
@@ -27,13 +27,17 @@ class Invite < ApplicationRecord
   end
 
   def valid_for_use?
-    (max_uses.nil? || uses < max_uses) && (expires_at.nil? || expires_at >= Time.now.utc)
+    (max_uses.nil? || uses < max_uses) && !expired?
   end
 
   def expire!
     touch(:expires_at)
   end
 
+  def expired?
+    !expires_at.nil? && expires_at < Time.now.utc
+  end
+
   private
 
   def set_code
diff --git a/app/views/admin/invites/_invite.html.haml b/app/views/admin/invites/_invite.html.haml
index 81edfd912d7716cc71d2827d90cac57e02f56edb..9555a89763109a520e2c6f184a032df73f028bdb 100644
--- a/app/views/admin/invites/_invite.html.haml
+++ b/app/views/admin/invites/_invite.html.haml
@@ -7,9 +7,13 @@
     = invite.uses
     = " / #{invite.max_uses}" unless invite.max_uses.nil?
   %td
-    - if invite.expires_at.nil?
-      ∞
+    - if invite.expired?
+      = t('invites.expired')
     - else
-      = l invite.expires_at
+      - if invite.expires_at.nil?
+        ∞
+      - else
+        %time.formatted{ datetime: invite.expires_at.iso8601, title: l(invite.expires_at) }
+          = l invite.expires_at
   %td= table_link_to 'link', public_invite_url(invite_code: invite.code), public_invite_url(invite_code: invite.code)
   %td= table_link_to 'times', t('invites.delete'), invite_path(invite), method: :delete if policy(invite).destroy?
diff --git a/app/views/invites/_invite.html.haml b/app/views/invites/_invite.html.haml
index d794d72e401baff8d1afdf40bc72cc0a8d36c817..3f5f7936c76898a0f380c2687255ef7a3ea32344 100644
--- a/app/views/invites/_invite.html.haml
+++ b/app/views/invites/_invite.html.haml
@@ -3,9 +3,13 @@
     = invite.uses
     = " / #{invite.max_uses}" unless invite.max_uses.nil?
   %td
-    - if invite.expires_at.nil?
-      ∞
+    - if invite.expired?
+      = t('invites.expired')
     - else
-      = l invite.expires_at
+      - if invite.expires_at.nil?
+        ∞
+      - else
+        %time.formatted{ datetime: invite.expires_at.iso8601, title: l(invite.expires_at) }
+          = l invite.expires_at
   %td= table_link_to 'link', public_invite_url(invite_code: invite.code), public_invite_url(invite_code: invite.code)
   %td= table_link_to 'times', t('invites.delete'), invite_path(invite), method: :delete if policy(invite).destroy?
diff --git a/config/locales/en.yml b/config/locales/en.yml
index d6f18e859da6bf3973d1e7e625b0d7db2d23202c..2719a4f8ccacafb60a7e1d3163674e3148139e7c 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -432,7 +432,8 @@ en:
     upload: Upload
   in_memoriam_html: In Memoriam.
   invites:
-    delete: Delete
+    delete: Deactivate
+    expired: Expired
     expires_in:
       '1800': 30 minutes
       '21600': 6 hours