Who can explain me in clear words the differences between all time libraries?
When do I need a special one?
I see, RTClib.h / Time.h / DS1307RTC.h / DS3231.h / TimeAlarms.h
They don't work all together: it is very frustrating!
I want to use a DS3231 to make a control for ringing the bell of a church, so I need to use time alarms (or build my own sketch to set the alarms).
Of course it is handy the Arduino is open source, but everybody makes his own version. Not compatible with all IDE's, not working with eachother.
My knowledge is too limited to interpretate the libraries, so it is a pitty that there is no overview which library is compatible with the IDE-version and which libraries are conflicting with another.
Libraries like the DS1307RTC.h and DS3231.h allow for easy functions to communicate with those special boards - if you're using the DS3231, you should use the DS3231.h library. I believe the RTC.h library is for the on-Arduino clock, which isn't as accurate as the DS3231. How To Mechatronics on Youtube has a good tutorial on using this clock and getting it set up.
The libraries all have different functions. Time.h deals primarily with Unix time and date manipulations.
You need to read the descriptions and documentation for each of the libraries, and look at the examples to see how they are primarily used.
The DS3231 RTC has an alarm function built in, and provides a logic signal to the Arduino, if desired. It is described in the DS3231 documentation, and you don't need a time alarm library to use it.
I recommend the JeeLabs RTC version. BTW, a time library and an RTC library are not the same thing. It's just that many RTC libraries have enough time support to render an additional time library unnecessary.
The appropriateness of library does depend a lot on what board/processor you are using so please tell us.