Observations uploaded via website are missing seconds in the time observed

It seems that the “time observed” is recorded to the second on Android and iOS observations but not for observations uploaded via the website. That is, the fields observed_on_string, time_observed_at, and time_observed_at_utc go down to which second it was observed when making an observation with the apps, but they are truncated to the minute for observations uploaded via the website, e.g. 12:13:27 is cut to 12:13:00 for website observations.

I’m personally not currently in need of this level of precision, but this may cause issues with sorting and data management.[1] [2] [3]

Whether this is a feature request or bug report, I’m not sure.

Android observation showing seconds:
https://www.inaturalist.org/photos/103039845
https://www.inaturalist.org/observations/64123154
https://www.inaturalist.org/observations/64123154.json

image

image

iPhone obs doesn’t display the time metadata on the photo itself (in contrast with Android), but it does show the seconds on the observation:
https://www.inaturalist.org/photos/90507492
https://www.inaturalist.org/observations/56779300
https://www.inaturalist.org/observations/56779300.json

image

Versus observations uploaded via the website, with the seconds in the photo metadata, but not recorded / stripped to 00 on the observation record itself:

https://www.inaturalist.org/photos/102789786
https://www.inaturalist.org/observations/63990339
https://www.inaturalist.org/observations/63990339.json

image

image

https://www.inaturalist.org/photos/108255370
https://www.inaturalist.org/observations/67062517
https://www.inaturalist.org/observations/67062517.json

image

image

Exported CSV:

5 Likes

I can confirm this bug, unbelievably, still occurs. I’m trying to build a tool which matches iNat observations to their original files based on EXIF data, and the first approach I tried was to match based on time_observed_at.

Due to this bug it’s not possible to accurately match observations if the user made more than one in a single minute. There also doesn’t seem to be an API endpoint for fetching individual photo metadata despite them having IDs which are referenced in other endpoints.

That means the only way I can find to extract the true datetime for an observation is to fetch it via the API, list all the photo IDs associated with it, for each one fetch https://www.inaturalist.org/photos/{id}, and parse the value in the “Date time original” cell. That’s a lot of additional requests due to some missing seconds data!

2 Likes

to be fair, if you’re trying to match by EXIF data, you should be matching by photo-specific (meta)data anyway, not trying to match based on the observation’s time_observed_at value.

as noted in an earlier topic where there was brief discussion about building this kind of tool:

you can make a contribution to the iNat codebase to add this, if you really want it.

1 Like