Как получить текущий год в программировании: шпаргалка по языкам

Иван Корнев·13 октября 2026·⏱3 мин

Чтобы получить текущий год, используйте стандартные функции даты и времени вашего языка. В Python это datetime.now().year, в JavaScript — new Date().getFullYear(), в PHP — date('Y'), а в Java — LocalDate.now().getYear(). Большинство функций возвращают целое число, кроме PHP (строка). Ниже приведены точные примеры кода для копирования и важные нюансы работы с часовыми зонами.

Оглавление

Примеры кода для популярных языков

Эти сниппеты возвращают текущий год на основе времени сервера или клиента.

  • Python Возвращает целое число.
    import datetime
    year = datetime.datetime.now().year
    ```

*   **JavaScript (Node.js и браузер)**
    Возвращает целое число (например, 2026).
    
```javascript
    const year = new Date().getFullYear();
    ```

*   **PHP**
    Возвращает строку из 4 цифр.
    
```php
    $year = date('Y');
    ```

*   **Java**
    Современный способ (пакет `java.time`). Возвращает целое число.
    
```java
    int year = java.time.LocalDate.now().getYear();
    ```

*   **C# (.NET)**
    Возвращает целое число.
    
```csharp
    int year = DateTime.Now.Year;
    ```

*   **Go**
    Возвращает целое число.
    
```go
    year := time.Now().Year()
    ```

*   **SQL (PostgreSQL, MySQL)**
    Возвращает число.
    
```sql
    -- Универсальный синтаксис (PostgreSQL, стандарт SQL)
    SELECT EXTRACT(YEAR FROM CURRENT_DATE);

    -- Специфика MySQL
    SELECT YEAR(CURRENT_DATE);
    ```

## Нюансы типов данных и производительность

При использовании полученных значений учитывайте особенности языков и среду выполнения.

**Разница типов данных**
В Python, JS, Java, C#, Go и SQL год возвращается как целое число (`integer`). В PHP функция `date('Y')` возвращает строку (`string`).
Если вам нужно выполнять математические расчеты (например, `год - 1990`), в PHP строку нужно явно приводить к числу:

```php
$year = (int)date('Y');
// или
$year = intval(date('Y'));

Производительность в циклах Не вызывайте функции получения текущего времени (now(), Date()) внутри циклов, которые обрабатывают тысячи записей.

  1. Время может «прыгнуть» прямо во время выполнения цикла (например, переход через полночь), что приведет к рассинхрону данных.
  2. Вызов функции «съедает» ресурсы процессора. Решение: Сохраните год в переменную перед началом цикла.

Риски: Часовые зоны и локальное время

Логическая ошибка данных. Использование локального времени сервера вместо UTC при генерации юридических документов, финансовых отчетов или логов. В переходные периоды (смена лет, летнее/зимнее время в некоторых странах) это приведет к записи неверного года или даты.

Функции now() или CURRENT_DATE берут время сервера. Это создает риски в двух случаях:

  1. Локация сервера. Если ваш сервер находится в России и не настроен на UTC, его локальное время — MSK (UTC+3). Это не имеет значения 29 сентября, но критично в ночь с 31 декабря на 1 января. Сервер может показать уже наступивший 2027 год, пока в Европе или в UTC-логах еще 2026-й. И наоборот, если сервер в Европе, а пользователи в России.
  2. Глобальные приложения. Для корректной работы всегда используйте UTC.

Как получить год в UTC:

  • Python:
    import datetime
    year = datetime.datetime.now(datetime.timezone.utc).year
    ```
*   **Java:**
    
```java
    int year = java.time.LocalDate.now(java.time.ZoneOffset.UTC).getYear();
    ```
*   **C#:**
    
```csharp
    int year = DateTime.UtcNow.Year;
    ```

## Частые ошибки

1.  **Использование устаревших методов в Java.**
    Не используйте `java.util.Date().getYear()`. Этот метод помечен как устаревший (deprecated) и возвращает число, вычитая 1900 из текущего года (то есть для 2026 года вернет 126). Используйте только `java.time.LocalDate`.
2.  **Математика со строками в PHP.**
    Попытка вычесть число из результата `date('Y')` без приведения типов может привести к неожиданному поведению или предупреждениям в строгих режимах. Всегда используйте `(int)` или `intval()`.
3.  **Игнорирование часовых зон в базах данных.**
    В SQL функция `CURRENT_DATE` зависит от настроек сессии и сервера. Если база данных распределенная, фиксируйте время в UTC на уровне приложения или используйте `CURRENT_TIMESTAMP AT TIME ZONE 'UTC'`.

## FAQ

**Почему в PHP год возвращается строкой, а не числом?**
Функция `date()` в PHP предназначена для форматирования даты в строковое представление. Даже если формат `'Y'` содержит только цифры, тип возвращаемого значения всегда `string`.

**Как получить год в JavaScript на стороне сервера (Node.js)?**
Код `new Date().getFullYear()` работает одинаково и в браузере, и в Node.js. Однако в Node.js время зависит от настроек операционной системы сервера, поэтому для глобальных приложений используйте `new Date().getUTCFullYear()`.

**Можно ли получить год в SQL без функции EXTRACT?**
В MySQL можно использовать функцию `YEAR(CURRENT_DATE)`. В PostgreSQL стандартным и наиболее совместимым способом остается `EXTRACT(YEAR FROM ...)`.