Function that returns the earliest time point when a worker is allowed to start duty
Why not just use &lt;stdbool.h&gt; instead of defining your own enum for it?  If it has to do with the standard being used, then make sure you're compiling under C99 or GNU99.
It looks like t and t2 are for testing and more could be added at some point.  If so, you could have an array of TimeStamps to help make the code more concise.
isNeededLocalNightsInTheRange() can be simplified as such:

return 2 &lt;= neededLocalNights &amp;&amp; neededLocalNights &lt;= 5;


This will automatically return the appropriate condition.
Try to avoid magic numbers by instead making them into constants.  This would apply to the 2, 8, 6, 5, and 0 (the -1 indicates an error and doesn't apply here).  Comments aren't always helpful enough and don't explain each of these anyway.
Error messages should be printed to fprintf() with its first argument as stderr to indicate this.  printf only prints to standard output.