web-dev-qa-db-fra.com

Test booléen pour savoir si une heure est avant ou après minuit dans Google Sheets?

Je cherche à créer une feuille Google qui calcule la différence entre le moment où je me suis endormi et le moment où je me suis réveillé. Voici ce que je veux faire:

Sleep time  Wake time   Difference
23:30       6:00        6.50
00:00       6:00        6.00
00:30       6:00        5.50

Voici ce qui se passe réellement:

Sleep time  Wake time   Difference
23:30       6:00        -17.50
00:00       6:00        6.00
00:30       6:00        5.50

La formule de la colonne Difference est

= (B2 - A2) * 24

selon cette réponse . Il est formaté sous forme de nombre. Le problème est, bien sûr, la limite de minuit - dans ma tête, il est clair que 23h30 signifie 23h30 du jour 1, alors que 6h00 est 6h du jour 2, mais ce n'est pas clair pour Gsheets. J'ai donc essayé une solution de contournement super compliquée où j'en ajoute une à la date de l'heure de réveil, mais cela ne fonctionne pas non plus:

Date        Sleep time  Sleep date time     Wake date   Wake time   Wake date time      Difference
29/05/2019  23:30:00    29/05/2019 23:30:00 30/05/2019  06:00:00    30/05/2019 06:00:00 6.50
30/05/2019  00:00:00    30/05/2019 00:00:00 31/05/2019  06:00:00    31/05/2019 06:00:00 30.00
31/05/2019  00:30:00    31/05/2019 00:30:00 01/06/2019  06:00:00    01/06/2019 06:00:00 29.50

Il calcule correctement pour le scénario où je m'endors avant minuit, mais pas quand je m'endors à minuit ou après. Je pense que cette solution serait possible si je savais comment tester si une heure est avant minuit ou après minuit. Faire une comparaison simple ne fonctionne pas, comme dans l'une de ces options:

= A1 < A2 (where A2 is '00:00:00' formatted as time)

= A1 < "00:00:00"

Le premier retourne tous FAUX que A1 soit "23:30", "00:00" ou "00:30", et le second retourne tous VRAI pour les mêmes paramètres.

Je suis sûr que je manque quelque chose d'évident, mais je ne sais tout simplement pas comment tester si une heure est avant minuit ou après minuit dans ce contexte. Y a-t-il un moyen?

Je suis au courant de cette réponse qui propose de formater l'heure à 24h30 après minuit, ce que je préférerais éviter pour qu'il soit plus facile de saisir l'heure, ou de "diviser l'événement en deux", ce que je ne comprends pas vraiment ce que cela signifie pratiquement. S'il existe une solution booléenne, cela pourrait être plus facile.

2
Lou
=ARRAYFORMULA(IF(LEN(A2:A), TEXT(B2:B-A2:A, "hh:mm"), ))

0


=ARRAYFORMULA(IF(LEN(A2:A), TEXT(B2:B-A2:A, "hh:mm")*24, ))

0

1
user0

J'ai réalisé qu'il y avait une meilleure façon de déterminer si une heure est avant ou après minuit - il suffit de tester le composant temps en utilisant HOUR. Si l'heure est comprise entre 0 et 6, l'heure peut être considérée comme étant après minuit. Sinon, c'est avant.

=AND(HOUR(C2)>=0, HOUR(C2)<=6)
0
Lou