- invalid date error in the date command linux
- 3 Answers 3
- Not the answer you’re looking for? Browse other questions tagged linux shell date or ask your own question.
- Linked
- Related
- Hot Network Questions
- Subscribe to RSS
- Invalid Date Linux
- 3 Answers 3
- Not the answer you’re looking for? Browse other questions tagged linux date or ask your own question.
- Related
- Hot Network Questions
- Subscribe to RSS
- date: invalid date ‘2018-10-21 +1 day’
- 1 Answer 1
- Настройка даты и времени в Linux – команда date
- Синтаксис и основные опции
- Форматы ввода/вывода даты и времени
- Заключение
- Команда Date в Linux с примерами
- Linux Date Command with Examples
- В этом руководстве мы рассмотрим основы date команды.
- Использование Date
- Параметры форматирования даты
- Пользовательское форматирование даты
- Переопределить часовой пояс
- Конвертер эпох
- Использование date с другими командами
- Показать время последнего изменения файла
- Установите системное время и дату
- Вывод
invalid date error in the date command linux
In the script I am using the command
It gives error date: invalid date `+%Y%m%d’ what may be the reason. I know that the variable CURRENT_DATE have value in it.
3 Answers 3
date -d $CURRENT_DATE will print the date corresponding to the $CURRENT_DATE variable.
To store the date into a variable, try using
EDIT
To print an existing date into a new format, use
Better still, wrap the $CURRENT_DATE variable within quotes, so that dates with spaces don’t break anything.
In your current example, you have a space after the -d flag, remove it.
This is happening because the variable is unset or empty, and you did not quote the variable:
If you use quotes, no error:
This has already been mentioned in a comment, but you must make sure there is actually a value in the variable $CURRENT if you want to do what you are trying to do. Try inserting these two lines in your script:
If one of the lines of output appears like the one below, then you have neglected to set $CURRENT to a non-empty string:
Trying various variations of date -d «$CURRENT» «+%Y%m%d» (with or without quotes, with or without space after -d ) when $CURRENT is an empty string, either I see the «invalid date» error or I get today’s date.
Not the answer you’re looking for? Browse other questions tagged linux shell date or ask your own question.
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.10.8.40416
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Источник
Invalid Date Linux
I’m testing my backup script on Linux and when I try to set the date to ‘20141019’ I have this error:
Another problem to set date to 28 days ago at 20141116
What is wrong with linux date v. 8.21?
3 Answers 3
You can try this command.
Command: timedatectl set-time YYYY-MM-DD HH:MM:SS
Set date and time: timedatectl set-time ‘2015-11-23 08:10:40’
Set only date: timedatectl set-time ‘2015-12-01’
Set only time: timedatectl set-time ’10:42:43′
It give you multiple solutions to set date and time, may be you can find something to solve your problem.
This is due to a problem with the timezone DST — if the timezone has entered the daylight saving time, then it won’t have the midnight to be counted on GNU date:
In this case, you can use UTC for that:
Not the answer you’re looking for? Browse other questions tagged linux date or ask your own question.
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.10.8.40416
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Источник
date: invalid date ‘2018-10-21 +1 day’
I’m getting a weird behavior when I ask date for the day after 2018-10-21:
The exact error-message is:
Why is this happening?
In case it’s relevant . . .
Here’s the output of lsb_release -a :
(and I get the same behavior on Ubuntu 16.04.4 LTS ).
Here’s the output of locale :
Here’s the output of date «+%z %Z» :
Here’s the output of date —version :
(and I get the same behavior on date (GNU coreutils) 8.25 ).
1 Answer 1
In Brasil, Summer Time starts at midnight. That’s different from most parts of the world, where the change is at 2:00 a.m., precisely because of the confusion which gives rise to this question.
NOTE: The following represents the information in the time zone file currently installed on my machine, and presumably that of the OP. However, in December, 2017, the government of Brasil decided to delay Summer Time by two weeks this year, so the transition will actually be on November 4, 2018. Hopefully, the TZ database will be updated before then.
Not all Brasilian states change their clocks twice a year. In at least one state (Matto Grosso), the decision is made by individual municipalities.
So in Sāo Paulo, there will be no 00:00:00 on October 21, 2018. When the clock ticks over a second from 23:59:59 on October 20, 2018, Summer Time will kick in and Sunday will start at 1 a.m.:
Note the change in TZ offset.
When you just type a date without a time, the time defaults to 0:00:00. If that time doesn’t exist on a given day, date complains:
Источник
Настройка даты и времени в Linux – команда date
Как это часто бывает, всё самое важное скрывается за самыми простыми вещами. Так и в случае с установкой/настройкой даты и времени в системе. Некорректные значения этих параметров запросто ломают логику работы многих приложений, особенно это касается тех систем, где на этом построены целые сервисы, такие как интернет-магазины, SCADA-системы на производстве и т. д. Поэтому так важно следить за корректными настройками времени, даты, языковых форматов, а также уметь все эти параметры настраивать. В системах Linux всё это позволяет выполнять команда date.
Синтаксис и основные опции
Согласно официальной информации, доступной из справочного руководства (команда man date), синтаксис команды date следующий:
Если дать команду date без аргументов или если аргументы начинаются с символа «+», то по-умолчанию будет выведено текущие значения даты и времени. В ином случае производится установка даты и времени, передаваемые в аргументах в каком-либо из форматов. Например, для установки времени введите команду
MM — Месяц
DD — День,
hh — часы в 24-часовом формате,
mm — минуты,
YYYY — 4 цифры года,
ss — секунды.
Прежде чем установить время проверьте правильность установки временной зоны.
Ниже мы боле подробно рассмотрим параметры ввода даты и времени.
Следующая команда выводит информацию о текущих дате и времени в форматированном виде:
Как видно, символ «+» позволяет печатать установленные (текущие) значения, а следующее за ним выражение задаёт формат вывода этих значений. Шаблон подстановки «%n» здесь служит для переноса строки. Все остальные шаблоны подстановки используются для выборки соответствующих компонент времени: месяцы, дни, часы, минуты и т. д. Само же выражение должно заключаться в кавычках, если в нём присутствуют пробельные символы.
Параметры CC, YY и .ss в синтаксисе date означают две последние цифры года, век и секунды (от 0 до 59) соответственно. И эти параметры не являются обязательными. Для того, чтобы устанавливать дату и время с помощью команды date, необходимы права суперпользователя.
В следующей таблице приводится описание основных опций команды date:
Опция | Значение |
-d, —date=STRING | Вычисляет день недели для заданной даты в качестве STRING. Дата задаётся в формате ггммдд. |
-f, —file=DATEFILE | То же самое, что и -d, но для исходных данных используется содержимое из файла FILE. |
-r, —reference=FILE | Определяет время последней модификации файла FILE. |
-s, —set=STRING | Устанавливает время/дату, заданные строкой STRING. |
-u, —utc, —universal | Использование формата |
Форматы ввода/вывода даты и времени
Для формата ввода даты/времени предусматриваются специальные элементы записи того или иного компонента даты/времени. В следующей таблице приводится описание этих элементов записи в виде пар букв, которым соответствуют составляющие даты и времени:
Элемент | Описание |
mm | Минуты — от 0 до 59. |
hh | Часы — от 0 до 23. |
DD | Дни — от 0 до 28, 29, 30 и 31. |
MM | Месяцы — от 01 до 12. |
Как уже можно было видеть, возвращаемые командой данные из её вывода можно форматировать произвольным способом, используя для этого специальные шаблоны подстановки или параметры форматирования. Они служат, как уже было отмечено выше, для выборки требуемых компонентов данных даты/времени из вывода команды date. Список этих параметров довольно длинный, но при этом его легко запомнить, поскольку наименования параметров довольно логичны. Следующая таблица отражает самые основные и часто используемые параметры форматирования:
Узнать время последнего изменения какого-либо файла:
Узнать день недели по его дате:
Вообще, команду date очень активно используют программисты для написания программного кода приложений, работающих с датой/временем, а также при написании скриптов для автоматизации некоторых процессов. Например, для автоматического наименования фалов, в имени которых содержится подстрока с датой его создания:
В результате будет создана копия файла settings.php под именем settings.php_back-070319. В данном случае используется директива $( ) для задания имени файла. Нужно заметить, что данный приём — очень мощный инструмент при работе в командной оболочке Linux.
Заключение
В заключение следует отметить отличную гибкость и большие возможности простой консольной утилиты, доступной по команде date, которая на первый взгляд не представляется заслуживающей внимания. Однако, команда date – это яркий пример «маленькой, но очень эффективной программы» в UNIX-подобных системах.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Команда Date в Linux с примерами
Linux Date Command with Examples
В этом руководстве мы рассмотрим основы date команды.
Команда date отображает или устанавливает системную дату. Чаще всего он используется для печати даты и времени в разных форматах и для расчета будущих и прошлых дат.
Использование Date
Синтаксис date команды следующий:
Выходные данные включают день недели, месяц, день месяца, время, часовой пояс и год:
Параметры форматирования даты
Вывод date команды может быть отформатирован с помощью последовательности символов управления форматом, перед которой стоит + знак. Элементы управления форматом начинаются с % символа и заменяются их значениями.
Символ %Y будет заменен на год, %m месяц и %d день месяца:
Вот еще один пример:
Ниже приведен небольшой список некоторых наиболее распространенных символов форматирования:
- %a — Сокращенное название дня недели (например, понедельник)
- %A — Сокращенное полное название дня недели (например, понедельник)
- %b — Сокращенное название месяца (например, январь).
- %B — сокращенное длинное название месяца (например, январь)
- %d — день месяца (например, 01)
- %H — час (00..23)
- %I — час (01.12.12)
- %j — День года (001..366)
- %m — Месяц (01.12.12)
- %M — Минута (00..59)
- %S — Второй (00 .. 60)
- %u — день недели (1..7)
- %Y — Полный год (например, 2019)
Чтобы получить полный список всех параметров форматирования, запустите date —help или man date в своем терминале.
Пользовательское форматирование даты
-d Опция позволяет работать на дату конкретного. Вы можете указать дату в виде удобочитаемой строки даты, как показано ниже:
Использование пользовательского форматирования:
Строка даты принимает значения, такие как «завтра», «пятница», «последняя пятница», «следующая пятница», «следующий месяц», «следующая неделя» .. и т. Д.
Вы также можете использовать параметр строки даты, чтобы показать местное время для разных часовых поясов. Например, чтобы показать местное время 6:30 утра следующего понедельника на восточном побережье Австралии, введите:
Переопределить часовой пояс
Команда date возвращает дату в системном часовом поясе по умолчанию . Чтобы использовать другой часовой пояс, установите переменную среды TZ в желаемый часовой пояс.
Например, чтобы показать время в Мельбурне, введите:
Чтобы получить список всех доступных часовых поясов , вы можете либо перечислить файлы в /usr/share/zoneinfo каталоге, либо использовать timedatectl list-timezones команду.
Конвертер эпох
date Команда может быть использована в качестве преобразователя Epoch. Время, или метки времени Unix, — это количество секунд, прошедших с 1 января 1970 года в 00:00:00 UTC.
Чтобы напечатать количество секунд от эпохи до текущего дня, вызовите date с %s контролем формата:
Чтобы преобразовать секунды с начала эпохи в дату, установите секунды в виде строки даты с префиксом @ :
Использование date с другими командами
Команда date чаще всего используется для создания имен файлов, которые содержат текущее время и дату.
Команда ниже создаст файл резервной копии Mysql в следующем формате database_name-20190601.sql
Вы также можете использовать date команду в своих сценариях оболочки. В приведенном ниже примере мы присваиваем выход date к date_now переменной:
Показать время последнего изменения файла
Команда date с -r параметром показывает время последнего изменения файла. Например:
Если вы хотите изменить временную метку файла, используйте touch команду .
Установите системное время и дату
Установка системного времени и даты вручную с помощью этой date команды не рекомендуется, поскольку в большинстве дистрибутивов Linux системные часы синхронизируются с ntp помощью systemd-timesyncd служб или .
Однако, если вы хотите установить системные часы вручную, вы можете использовать эту —set= опцию. Например, если вы хотите установить дату и время 17:30, 01 июня 2019 г., введите:
Вывод
Команда Linux date отображает или устанавливает системную дату и время.
Источник