23

Currently Thunderbird displays time in AM/PM mode.

How can I change it to 24h mode?

UPDATE 1:

$ locale |grep LC_TIME
LC_TIME="en_US.UTF-8"
pl1nk
  • 6,399
  • 1
    I think it has to do with your computer time settings, not thunderbird's. – Evandro Silva Nov 07 '12 at 12:47
  • I agree, I think you have to set your locale to a 24 hours format. – NorTicUs Nov 07 '12 at 12:52
  • I have added my locale setting in my question, however in evolution I don't have the same issue. Furthermore there should be a Theunderbird setting to this issue. – pl1nk Nov 07 '12 at 13:24
  • 1
    for me it is also happening the same; pc settings is 24 h clock but Thunderbird not. – bob Nov 09 '12 at 21:08
  • 1
    It's ridiculous. The question has been asked repeatedly at least since 2005. No change, as far as have been able to find out it's purely hit and miss. – Fsando Nov 15 '12 at 19:12

7 Answers7

16

Ok, solved it:

1) Make sure you have the locale you need, can't say which you specifically need but when you know you create it like this (using en_DK.utf8)

sudo locale-gen en_DK.utf8

2) To make sure this locale is in effect for thunderbird you add it to the script that starts thunderbird, so first find that script:

2a) find the right script

which thunderbird

In my case: /usr/bin/thunderbird

2b) add locale to the script (I use the editor geany):

gksudo geany /usr/bin/thunderbird

Add this in the beginning of the script (I just put at the very beginning):

LC_ALL="en_DK.utf8"
export LC_ALL

Just want to add this:

https://help.ubuntu.com/community/Locale

EDIT: as pointed out by pl1nk A better solution would be to NOT touch the /usr/bin/thunderbird script and instead create the script '/usr/local/bin/thunderbird' with this content

#!/bin/sh
LC_ALL="en_DK.utf8"
export LC_ALL
/usr/bin/thunderbird $@

make sure it's executable

sudo chmod a+x /usr/local/bin/thunderbird

Then check if it's being used to start thunderbird:

which thunderbird

should respond with this:

/usr/local/bin/thunderbird

Now thunderbird can be started as before.

Eric Carvalho
  • 54,385
Fsando
  • 595
  • Great solution ... small quibble it's not good practice to use sudo to run an editor, better to use sudoedit for editing files owned as root. – Peter Jenkins Nov 15 '12 at 19:45
  • Why is this not good practice? I didn't know about sudoedit handy for ssh. OTH: it apparently just start the default non-gui editor, which is fine if it's nano as in my case but I would be less than thrilled to be met with vi which I frankly don't even know how to close. – Fsando Nov 15 '12 at 20:01
  • In the classic vi editor you can 'escape' to the shell by pressing ':!bash' then you would have root access (if running through sudo). Other editors have similar features because it's helpful to run a compiler and see output without leaving the editor (although frankly with modern window managers it's not really used these days). – Peter Jenkins Nov 15 '12 at 20:25
  • @Fsando While this could be a solution, it's quite a hack. Don't forget that you need to add this locale code every time that thunderbird packages are being upgraded. – pl1nk Nov 16 '12 at 14:26
  • 1
    @pl1nk yes, I realized that. Just didn't have the time to improve my answer. I much better solution would be to put the LC_* in a script "/usr/local/bin/thunderbird" that calls the global one. – Fsando Nov 17 '12 at 04:01
  • There's further information about customizing locale and internationalization files in an answer to another question. (Full disclosure: it's my answer, but I still think it's relevant. YMMV.) – Wilson F Jun 20 '16 at 17:05
  • Does this still work on recent Thunderbird version? I'm trying 58 beta currently and setting LC_TIME or LC_ALL no longer helps. I can see in less /proc/$(pidof thunderbird)/environ on Linux that the env var is set correctly, but it seems to be ignored. – nh2 Dec 23 '17 at 02:18
  • Update: In Thunderbird 52 it still works. But in Thunderbird 58 Beta it no longer does. – nh2 Dec 23 '17 at 02:21
  • 1
    I've filed a bug for that. – nh2 Dec 23 '17 at 02:27
  • Updated workaround env LC_TIME=sv_SE.UTF-8 thunderbird looks promising as I use only the short date format and not the long date format. Nice summary comment to above-linked bug report - https://bugzilla.mozilla.org/show_bug.cgi?id=1426907#c138 – Randall Whitman Jul 08 '19 at 23:26
11

There's a Super Date Format thunderbird addon:

enter image description here

enter image description here

Philip
  • 103
Adobe
  • 3,891
  • This is a far better answer than any other. – Russ Bateman Oct 04 '15 at 02:25
  • @RussBateman but (according to the link) this only changes the Date/Received column, not things like Lightning. Changing the locale is more robust. – Sparhawk Jul 04 '16 at 01:52
  • 2
    This plugin is no longer supported and only compatible up to Thunderbird version 21 :( – Jeff Puckett Sep 19 '17 at 14:52
  • There is a simple solution for the time and date format issues - a newer plugin works for Thunderbird 60+ that allows full customization of the time and date formats. It's called "Enhanced Date Formatter" and is in the list of extensions inside Thunderbird. Just fire up Thunderbird and search for it, install it, and customize however you want. – Compatico Nov 02 '19 at 18:50
  • @Compatico - Thanks for the tip, but in "Enhanced Date Formatter" (link) there does not appear to be any option to change the time format, only dates, so it does not seem like a solution for 24h time. – bitinerant Nov 17 '19 at 12:59
  • @bitinerant wow seems that extension has already been marked incompatible with current versions. – Compatico Nov 19 '19 at 02:57
8

Thunderbird 60

The way dates and times are formatted in Thunderbird 60 has changed. The following will provide a date/time format that will look like this: 2018-12-04 14:23:

  1. Create the root locale

    sudo ln -s /usr/share/i18n/locales/en_DK /usr/share/i18n/locales/root
    sudo sh -c "echo 'root.UTF-8 UTF-8' > /var/lib/locales/supported.d/local"
    sudo locale-gen
    
  2. Copy the Thunderbird launcher locally

    cp /usr/share/applications/thunderbird.desktop ~/.local/share/applications/
    
  3. Change the date/time locale for Thunderbird

    sed -i.bak 's/^Exec=thunderbird %u/Exec=env LC_TIME=root.utf8 thunderbird %u/' ~/.local/share/applications/thunderbird.desktop
    

Thunderbird 59 and below

Fsando's answer works, but LC_ALL will change the entire locale (date, number, currency format, etc) used by Thunderbird instead of just the date/time format, which is all that's asked for in the question. Not only that, but I don't like creating extra scripts if I don't have to. Here's what I did:

  1. Make sure the en_DK.utf8 locale is available (it should already be available if your desktop language is English):

    locale -a | grep en_DK
    
  2. If it's not, install the locale, the official way:

    sudo apt-get -y install language-pack-en
    

    Or if you don't feel like installing extra packages:

    sudo locale-gen en_DK.utf8
    
  3. Copy the Thunderbird launcher locally

    cp /usr/share/applications/thunderbird.desktop ~/.local/share/applications/
    
  4. Change just the date/time locale for Thunderbird

    sed -i.bak 's/^Exec=thunderbird %u/Exec=env LC_TIME=en_DK.utf8 thunderbird %u/' ~/.local/share/applications/thunderbird.desktop
    
  5. If you're using Xfce the change is picked up right away, but if you're using Unity you may have to log out/log back in. Not sure about GNOME.

Next time you open Thunderbird from your launcher, it should use the new date/time format.

Advantages:

  • Only overrides the date/time format
  • No extra scripts necessary
  • Only makes the change for your user, not all users on the system

And as a bonus, the change shouldn't get overwritten when the thunderbird package gets updated, because it won't touch your local launcher file.

Source:
http://kb.mozillazine.org/Date_display_format

Note: As Sparhawk mentions, LC_TIME will change date format as well as time format. However, you can find a locale with the same date format and different time format, and thereby change only the time format.

For example, this is what the en_US.utf8 locale looks like:

$ python3 -c "import locale, time; locale.setlocale(locale.LC_TIME, 'en_US.utf8'); print(time.strftime('%x %X'))"
12/05/2018 03:40:50 PM

Changing the locale to en_DK.utf8 will change the date format too:

$ python3 -c "import locale, time; locale.setlocale(locale.LC_TIME, 'en_DK.utf8'); print(time.strftime('%x %X'))"
2018-12-05 15:41:14
bmaupin
  • 4,930
  • Won't this change the date format too? – Sparhawk Feb 23 '15 at 23:53
  • Only if you pick a locale with a different date format. But a good point nonetheless. I've updated my answer. – bmaupin Mar 01 '15 at 19:20
  • I haven't tried it, but I think the short date differs between en_US.UTF8 and en_GB.UTF8. i.e. the former is MM/DD/YY and the latter is DD/MM/YY. This might make a difference in Thunderbird? – Sparhawk Mar 01 '15 at 21:13
7
LC_TIME=en_DK.utf8 thunderbird

I run my system as en_US.UTF-8 too, just in case....

Eric Carvalho
  • 54,385
2

I just added LC_TIME=en_DK.UTF-8 to /etc/default/locale. Works fine on Linux Mint 17.3, should work in Ubuntu too.

1) open /etc/default/locale in your editor. The content of the file should look something like this:

LANG="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"

2) add LC_TIME=en_DK.UTF-8. If LC_TIME= is already there, change its value to en_DK.UTF-8.

3) Save and restart OS.

/etc/default/locale is not thunderbird specific. If you change the format there it will probably apply to other applications as well.

Rotareti
  • 559
1

In Ubuntu 18.04 and later (and probably other Gnome-based distros), date format is controlled by Gnome for each user. Open Terminal and type:

gsettings set org.gnome.desktop.interface clock-format '24h'

Then restart Thunderbird.

Credit: a comment from PRATAP on a related question How to set date format from 12 hour to 24 hour at the command line

bitinerant
  • 1,019
-1

There is a simple solution for the time and date format issues - a newer plugin works for Thunderbird 60+ that allows full customization of the time and date formats. It's called "Enhanced Date Formatter" and is in the list of extensions inside Thunderbird. Just fire up Thunderbird and search for it, install it, and customize however you want.

Compatico
  • 154
  • Thanks for the tip, but in "Enhanced Date Formatter" (link) there does not appear to be any option to change the time format, only dates, so it does not seem like a solution for 24h time. – bitinerant Nov 17 '19 at 13:03