
Reliable irrigation data timestamps need two separate facts: an unambiguous instant for storage and a named local time zone for display and farm-day reports. Store each observation and event as UTC, or as an offset-bearing timestamp that can be converted to UTC. Keep the farm’s IANA time-zone identifier separately. Never store a bare value such as “2026-11-01 01:30” as the only time record, because that wall-clock time can occur twice when daylight saving ends.
A USDA ARS researcher works at a site-specific controller on a center-pivot irrigation system. The controller and operator come from the real USDA photograph; only the side areas were extended with AI to create a landscape crop. Photo: Peggy Greb / USDA Agricultural Research Service. The scene provides equipment context and does not validate the timestamp design below.
This guide defines a data contract for irrigation management software, controllers, gateways, sensors and reports. It separates measurement time from arrival time, explains repeated and missing local hours, and gives an acceptance test that a farm team can run before trusting daily water totals. It is a design and commissioning method, not a claim about any particular platform.
A timestamp is useful only when its event is named. For a soil-moisture sample, observed_at should describe when the sensor made the observation. For a IrriNex IRX-OOCV hydraulic control valve command, requested_at, accepted_at and executed_at are different events. For a flow total, the record also needs the start and end of the accumulation interval. Calling every field simply “time” hides these differences and can reverse the apparent order of work.
Keep the time when a gateway received or uploaded a record in a separate ingested_at field. A remote logger may buffer observations during a communication outage and deliver them later. The later arrival must not replace the original measurement time. Otherwise a night irrigation can appear on a morning chart, a stale sensor can look current, and an alarm-delay calculation can become meaningless.
Record clock quality with the observation when it affects the decision. Useful states include synchronized, estimated after restart, controller clock unknown, and corrected during import. A UTC suffix cannot repair a clock that was ten minutes wrong; it only identifies the time basis that the software assumed. The soil-sensor placement guide addresses whether a reading represents the irrigated root zone; this article addresses whether the record preserves when that reading was made. Both checks are needed before software can support an irrigation decision.
| Field | Meaning | Example | Why it is separate |
|---|---|---|---|
| observed_at_utc | Instant when the sensor or controller made the observation | 2026-11-01T05:30:00Z | Orders field evidence without local-time ambiguity |
| ingested_at_utc | Instant when the platform received the record | 2026-11-01T05:42:18Z | Measures delivery delay without rewriting history |
| site_time_zone | Named zone used for farm displays and calendar reports | America/New_York | Applies the correct rule for the date, including rule changes |
| utc_offset_at_event | Offset that applied at that instant | -04:00 | Makes an exported local label unambiguous |
| clock_quality | Known timing condition or uncertainty | synchronized | Prevents false precision after resets or manual clock changes |
UTC identifies the instant. A numeric offset such as −04:00 tells how local civil time related to UTC at that instant. A named zone such as America/New_York carries a set of historical and future civil-time rules. These values answer related but different questions, so a robust irrigation record should not treat them as interchangeable.
An offset alone cannot calculate next season’s local schedule, because it has no daylight-saving history or future rule. A zone abbreviation is even weaker: labels such as CST can refer to different offsets and regions. Store a maintained zone identifier selected for the actual farm location, while retaining UTC instants for observations and executed events.
The U.S. National Institute of Standards and Technology explains that daylight-saving start and end dates follow current rules and that some U.S. jurisdictions do not observe the change. That government guidance was reviewed as background research. Time-zone law can change, so software should use an updated time-zone database and record the database or platform version used for a critical export rather than hard-code a permanent offset.
Use local time as a presentation and business-rule layer. Operators naturally ask what happened at 06:00 on the farm or how much water was applied on Monday. The application can answer those questions by converting stored instants using the site zone. Keep the zone label visible in exports and screens when users can view farms in more than one region.
When clocks move backward, part of the local hour occurs twice. In New York on 1 November 2026, the label 01:30 can represent 2026-11-01T05:30:00Z with offset −04:00 or 2026-11-01T06:30:00Z with offset −05:00. The two observations are an hour apart even though a wall-clock column without an offset makes them look identical.
Do not deduplicate records by local date, local time and sensor ID. Use a stable event identifier or the unambiguous observation instant as part of the key. A chart should preserve both points and may show the offset, zone abbreviation or a repeated-hour marker in a tooltip. A CSV export should include UTC and local time with offset in separate columns.
A schedule at 01:30 on the fallback date needs an explicit policy. The controller might run at the first occurrence, the second occurrence, both, or once according to its own documented rule. None of those outcomes should be guessed from a dashboard. Choose the farm’s intended behavior, confirm the installed controller supports it, and test the exact transition in a safe simulator or staging environment.
For elapsed irrigation duration, subtract instants rather than wall-clock labels. An event that starts at the first 01:45 and stops at the second 01:15 has a positive elapsed duration even though the displayed clock appears to move backward. Preserve the controller’s start and stop instants alongside any calculated runtime and delivered volume.
When clocks move forward, some local times do not exist. A request for a 02:15 local start on a transition day may be rejected, skipped or moved by the scheduling engine. The application must document which result applies and show it before an operator relies on the schedule.
Separate three kinds of recurrence. A wall-clock schedule means “run at 06:00 farm time” and follows local clock rules. An elapsed interval means “run 24 hours after the last start” and can drift by one local hour across a transition. A solar or agronomic trigger follows a separate observation or model. Storing all three as a generic daily event creates silent changes.
For a nonexistent time, define whether the occurrence is skipped, shifted to the next valid instant, or blocked for operator review. The policy belongs in the schedule definition and audit record. Do not silently normalize 02:15 to 03:15, because that can place irrigation in a different energy tariff, labor window or IrriNex FRT-VEN injector sequence.
Controllers that operate offline may apply their own clock and transition rules while the cloud is unavailable. Record the controller firmware, zone configuration and clock source. After reconnecting, reconcile actual execution logs rather than inferring operation from the planned schedule. The irrigation controller selection guide helps identify which control architecture owns local execution; timestamp behavior still requires model-specific confirmation.
A farm day is a calendar interval in the site time zone, not always 24 elapsed hours. The day when clocks advance can contain 23 hours; the fallback day can contain 25. Calculate the UTC instant for local midnight at the start and the next local midnight at the end, then aggregate observations within that exact interval.
Use half-open boundaries: include records at or after the start and before the end, written as [start, end). The next report begins exactly at the previous end. This prevents a reading at midnight from being counted twice. Define the rule for interval measurements that cross the boundary: split from raw samples where justified, assign by interval end, or retain an explicit cross-boundary record. State the method in the report.
Do not divide daily volume by a fixed 24 when computing average flow on a transition day. Use the actual elapsed seconds represented by the report. Also distinguish a flow-meter totalizer delta from the sum of interval values. The flow-meter pulse guide explains counter rollover and interval conversion; the timestamp boundary determines which counts belong to the report.
| Record | Local label | UTC instant | Volume |
|---|---|---|---|
| A | 01:30 −04:00 | 05:30Z | 8 m³ |
| B | 01:30 −05:00 | 06:30Z | 9 m³ |
| C | 23:45 −05:00 | 04:45Z on the next UTC date | 7 m³ |
| Farm-day result | 00:00 to next 00:00 in the site zone | 25 elapsed hours | 24 m³ |
The values are hypothetical arithmetic, not measurements from the photograph or a product specification. Record A and B must both remain in the total. Record C belongs to the same local farm day although its UTC calendar date has advanced. Grouping by the first ten characters of a UTC string would put it in the wrong local report.
Moving a farm to another named zone in software should change future display and business rules, not rewrite stored instants. Retain who changed the setting, the old and new zone, when the change became effective, the reason and which schedules were re-evaluated. A clerical zone correction can materially change report membership even when no sensor value changes.
Never overwrite a raw controller timestamp during cleanup without retaining the original. If a known clock error is corrected, preserve the source value, correction method, applied offset, reviewer and corrected instant. Keep a quality flag so downstream users can distinguish a synchronized timestamp from an estimated reconstruction.
When several systems contribute data, assign ownership for time conversion at each interface. A controller may emit local time, a gateway may add an offset, and an API may convert again. Document the actual contract and test with a known fixture. Double conversion can shift an irrigation event by hours while producing a timestamp that still looks syntactically valid.
Use sequence numbers or cumulative counters as supporting evidence, not replacements for time. They can reveal missing or reordered observations when a clock jumps. Pairing them with raw and corrected timestamps creates a defensible trail for water-use reports and remote alarms.
On an operator screen, show the farm’s local time and zone clearly. On a diagnostic screen, make UTC, offset, source clock state and ingestion delay available. A multi-farm dashboard should not silently render every event in the viewer’s laptop zone. Let users choose a display zone, then label it and preserve the farm-zone value in exported data.
For APIs, use a documented offset-bearing format with consistent precision. State whether the interval start is inclusive and the end exclusive. Return the zone identifier when the response contains farm-day groupings or future schedules. Do not use a localized display string as an integration field.
For CSV exports, include machine-readable columns before presentation columns. Keep observed_at_utc, observed_at_local_with_offset, site_time_zone, ingested_at_utc, clock_quality, record_id, value and unit. Spreadsheet users can then sort by UTC while still understanding the farm’s local day.
Alarm evaluation needs the same distinction. Freshness should compare the current instant with observed_at, while transport delay compares ingested_at with observed_at. An alarm created from a delayed batch should retain the observation that triggered it. The remote irrigation alarm design guide explains how to connect a condition with an operator action.
Define expected results before running the test. Use non-operating simulation for abnormal clock changes unless an authorized procedure makes the field trial safe. Do not alter a production controller clock during active irrigation merely to create evidence.
| Risk | Test evidence | Failure signal | Required disposition |
|---|---|---|---|
| Repeated local hour | Two distinct instants and IDs survive display, export and aggregation | One record disappears or both share one key | Block affected totals and repair identity logic |
| Missing local hour | Schedule follows the selected and visible policy | Silent shift, duplicate or unexplained skip | Clarify policy, correct engine and retest |
| Buffered data | Observation and ingestion times remain separate | Late upload looks newly measured | Correct data contract and freshness rules |
| Farm-day report | Local boundaries map to exact UTC instants | Fixed 24-hour window or duplicate midnight | Recalculate affected reports from raw records |
| Clock correction | Raw value, correction and reviewer remain auditable | Source timestamp overwritten | Restore provenance before relying on history |
Acceptance applies to the tested versions, zone, interfaces and report definitions. Repeat the affected cases after a time-zone database update, controller replacement, gateway change or reporting rewrite. Preserve failed results with the corrective version instead of replacing them with an all-green screenshot.
UTC is enough to identify a measured instant, but it is not enough to reproduce a farm’s local calendar report or future wall-clock schedule. Keep the farm’s named time zone and the rule used for report boundaries alongside UTC records.
There is no safe universal assumption. Define whether the schedule means first occurrence, second occurrence, both or once under a documented controller rule. Verify the installed system in a safe test and show the result in the execution log.
The difference reveals transmission delay and buffered history. It lets the platform identify stale field evidence without changing when the measurement actually occurred.
Only after each instant is converted to the intended site time zone and the report boundary is defined. Grouping raw UTC dates or bare local strings can misplace late-evening records and collapse the repeated hour.
When clocks fall back from 2:00 AM to 1:00 AM, an entire hour of telemetry is duplicated under identical timestamps. If the database enforces unique timestamp keys, the second hour of irrigation data crashes the database or overwrites valid watering logs.
Record, log, and store every single data point exclusively in Coordinated Universal Time (UTC) formatted under ISO 8601 (e.g. `2026-11-01T08:00:00Z`). Local timezone offsets and Daylight Saving adjustments should only be applied at the frontend user interface layer.
FAO-56 daily water budgets sum solar radiation and vapor deficit from solar midnight to solar midnight. If data loggers are skewed by a 1-hour DST offset, peak solar radiation data shifts across days, causing algorithmic model errors.
At least once every 24 hours via cellular/satellite connection. Low-cost quartz crystal RTC oscillators drift by 1 to 3 seconds per day under extreme field temperature swings (-10°C to +50°C), accumulating 15 minutes of drift per year if uncorrected.
Products relevant to this irrigation guide.

Threaded full-circle impact sprinkler delivering 360° rotating coverage for row crops, pastures and field irrigation, with a standard male-thread inlet for fast riser mounting.

Single-outlet arrow dripper for pots and containers, delivering a steady low-flow trickle straight to the root zone via standard 4/7 mm distribution tubing.

IrriNex 2-way arrow dripper feeds two plants from a single outlet, ideal for potted crops, nursery containers and greenhouse tomato or pepper rows.

Insect-proof rotating micro sprinkler with male-thread inlet, delivering 360° uniform spray for orchards, greenhouses and overhead irrigation lines.