esphome:
  name: strftime-to-test
host:
api:
logger:

time:
  - platform: homeassistant
    id: ha_time

text_sensor:
  # Test strftime_to with a valid format
  - platform: template
    name: "Time Format Test"
    id: time_format_test
    update_interval: 100ms
    lambda: |-
      auto now = ESPTime::from_epoch_local(1704067200);  // 2024-01-01 00:00:00 UTC
      char buf[ESPTime::STRFTIME_BUFFER_SIZE];
      size_t len = now.strftime_to(buf, "%Y-%m-%d %H:%M:%S");
      return std::string(buf, len);

  # Test strftime_to with a short format
  - platform: template
    name: "Time Short Format"
    id: time_short_format
    update_interval: 100ms
    lambda: |-
      auto now = ESPTime::from_epoch_local(1704067200);
      char buf[ESPTime::STRFTIME_BUFFER_SIZE];
      size_t len = now.strftime_to(buf, "%H:%M");
      return std::string(buf, len);

  # Test strftime (std::string version) still works
  - platform: template
    name: "Time String Format"
    id: time_string_format
    update_interval: 100ms
    lambda: |-
      auto now = ESPTime::from_epoch_local(1704067200);
      return now.strftime("%Y-%m-%d");

  # Test strftime_to with empty/invalid format returns ERROR
  - platform: template
    name: "Time Error Format"
    id: time_error_format
    update_interval: 100ms
    lambda: |-
      auto now = ESPTime::from_epoch_local(1704067200);
      char buf[ESPTime::STRFTIME_BUFFER_SIZE];
      // Empty format string causes strftime to return 0
      size_t len = now.strftime_to(buf, "");
      return std::string(buf, len);
