# Calculate the angle between hour hand and minute hand

• Difficulty Level : Easy
• Last Updated : 14 Jan, 2022

This problem is known as Clock angle problem where we need to find angle between hands of an analog clock at a given time.
Examples:

```Input:
h = 12:00
m = 30.00
Output:
165 degree

Input:
h = 3.00
m = 30.00
Output:
75 degree```

The idea is to take 12:00 (h = 12, m = 0) as a reference. Following are detailed steps.

1. Calculate the angle made by hour hand with respect to 12:00 in h hours and m minutes.
2. Calculate the angle made by minute hand with respect to 12:00 in h hours and m minutes.
3. The difference between the two angles is the angle between the two hands.

How to calculate the two angles with respect to 12:00?
The minute hand moves 360 degrees in 60 minute(or 6 degrees in one minute) and hour hand moves 360 degrees in 12 hours(or 0.5 degrees in 1 minute). In h hours and m minutes, the minute hand would move (h*60 + m)*6 and hour hand would move (h*60 + m)*0.5.

## C++

 `// C++ program to find angle between hour and minute hands``#include ``using` `namespace` `std;` `// Utility function to find minimum of two integers``int` `min(``int` `x, ``int` `y)``{``    ``return` `(x < y)? x: y;``    ` `}` `int` `calcAngle(``double` `h, ``double` `m)``{``    ``// validate the input``    ``if` `(h <0 || m < 0 || h >12 || m > 60)``        ``printf``(``"Wrong input"``);` `    ``if` `(h == 12) h = 0;``    ``if` `(m == 60)``     ``{``      ``m = 0;``      ``h += 1;``       ``if``(h>12)``        ``h = h-12;``     ``}` `    ``// Calculate the angles moved``    ``// by hour and minute hands``    ``// with reference to 12:00``    ``float` `hour_angle = 0.5 * (h * 60 + m);``    ``float` `minute_angle = 6 * m;` `    ``// Find the difference between two angles``    ``float` `angle = ``abs``(hour_angle - minute_angle);` `    ``// Return the smaller angle of two possible angles``    ``angle = min(360 - angle, angle);` `    ``return` `angle;``}` `// Driver Code``int` `main()``{``    ``cout << calcAngle(9, 60) << endl;``    ``cout << calcAngle(3, 30) << endl;``    ``return` `0;``}` `// This is code is contributed by rathbhupendra`

## C

 `// C program to find angle between hour and minute hands``#include ``#include ` `// Utility function to find minimum of two integers``int` `min(``int` `x, ``int` `y) { ``return` `(x < y)? x: y; }` `int` `calcAngle(``double` `h, ``double` `m)``{``    ``// validate the input``    ``if` `(h <0 || m < 0 || h >12 || m > 60)``        ``printf``(``"Wrong input"``);` `    ``if` `(h == 12) h = 0;``    ``if` `(m == 60)``     ``{``      ``m = 0;``      ``h += 1;``       ``if``(h>12)``        ``h = h-12;``     ``}`  `    ``// Calculate the angles moved by hour and minute hands``    ``// with reference to 12:00``    ``int` `hour_angle = 0.5 * (h*60 + m);``    ``int` `minute_angle = 6*m;` `    ``// Find the difference between two angles``    ``int` `angle = ``abs``(hour_angle - minute_angle);` `    ``// Return the smaller angle of two possible angles``    ``angle = min(360-angle, angle);` `    ``return` `angle;``}` `// Driver Code``int` `main()``{``    ``printf``(``"%d n"``, calcAngle(9, 60));``    ``printf``(``"%d n"``, calcAngle(3, 30));``    ``return` `0;``}`

## Java

 `// Java program to find angle between hour and minute hands``import` `java.io.*;` `class` `GFG``{``    ``// Function to calculate the angle``    ``static` `int` `calcAngle(``double` `h, ``double` `m)``    ``{``        ``// validate the input``        ``if` `(h <``0` `|| m < ``0` `|| h >``12` `|| m > ``60``)``            ``System.out.println(``"Wrong input"``);` `        ``if` `(h == ``12``)``            ``h = ``0``;``             ``if` `(m == ``60``)``       ``{``        ``m = ``0``;``        ``h += ``1``;``        ``if``(h>``12``)``          ``h = h-``12``;``        ``}`  `        ``// Calculate the angles moved by hour and minute hands``        ``// with reference to 12:00``        ``int` `hour_angle = (``int``)(``0.5` `* (h*``60` `+ m));``        ``int` `minute_angle = (``int``)(``6``*m);` `        ``// Find the difference between two angles``        ``int` `angle = Math.abs(hour_angle - minute_angle);` `        ``// smaller angle of two possible angles``        ``angle = Math.min(``360``-angle, angle);` `        ``return` `angle;``    ``}``    ` `    ``// Driver Code``    ``public` `static` `void` `main (String[] args)``    ``{``        ``System.out.println(calcAngle(``9``, ``60``)+``" degree"``);``        ``System.out.println(calcAngle(``3``, ``30``)+``" degree"``);``    ``}``}` `// Contributed by Pramod Kumar`

## Python3

 `# Python program to find angle``# between hour and minute hands` `# Function to Calculate angle b/w``# hour hand and minute hand``def` `calcAngle(h,m):``        ` `        ``# validate the input``        ``if` `(h < ``0` `or` `m < ``0` `or` `h > ``12` `or` `m > ``60``):``            ``print``(``'Wrong input'``)``        ` `        ``if` `(h ``=``=` `12``):``            ``h ``=` `0``        ``if` `(m ``=``=` `60``):``            ``m ``=` `0``            ``h ``+``=` `1``;``            ``if``(h>``12``):``                   ``h ``=` `h``-``12``;``        ` `        ``# Calculate the angles moved by``        ``# hour and minute hands with``        ``# reference to 12:00``        ``hour_angle ``=` `0.5` `*` `(h ``*` `60` `+` `m)``        ``minute_angle ``=` `6` `*` `m``        ` `        ``# Find the difference between two angles``        ``angle ``=` `abs``(hour_angle ``-` `minute_angle)``        ` `        ``# Return the smaller angle of two``        ``# possible angles``        ``angle ``=` `min``(``360` `-` `angle, angle)``        ` `        ``return` `angle` `# Driver Code``h ``=` `9``m ``=` `60``print``(``'Angle '``, calcAngle(h,m))` `# This code is contributed by Danish Raza`

## C#

 `// C# program to find angle between``// hour and minute hands``using` `System;` `class` `GFG {``    ` `    ``// Function to calculate the angle``    ``static` `int` `calcAngle(``double` `h, ``double` `m)``    ``{``        ``// validate the input``        ``if` `(h < 0 || m < 0 ||``            ``h > 12 || m > 60)``            ``Console.Write(``"Wrong input"``);` `        ``if` `(h == 12)``            ``h = 0;``            ` `       ``if` `(m == 60)``       ``{``        ``m = 0;``        ``h += 1;``        ``if``(h>12)``          ``h = h-12;``       ``}` `        ``// Calculate the angles moved by hour and``        ``// minute hands with reference to 12:00``        ``int` `hour_angle = (``int``)(0.5 * (h * 60 + m));``        ``int` `minute_angle = (``int``)(6 * m);` `        ``// Find the difference between two angles``        ``int` `angle = Math.Abs(hour_angle - minute_angle);` `        ``// smaller angle of two possible angles``        ``angle = Math.Min(360 - angle, angle);` `        ``return` `angle;``    ``}``    ` `    ``// Driver code``    ``public` `static` `void` `Main ()``    ``{``        ``Console.WriteLine(calcAngle(9, 60));``        ``Console.Write(calcAngle(3, 30));``    ``}``}` `// This code is contributed by Nitin Mittal.`

## PHP

 `12 || ``\$m` `> 60)``        ``echo` `"Wrong input"``;` `    ``if` `(``\$h` `== 12) ``\$h` `= 0;``    ``if` `(``\$m` `== 60) {``        ``\$m` `= 0;``        ``\$h` `+= 1;``        ``if``(``\$h``>12)``          ``\$h` `= ``\$h``-12;``    ``}` `    ``// Calculate the angles``    ``// moved by hour and``    ``// minute hands with``    ``// reference to 12:00``    ``\$hour_angle` `= 0.5 *``                  ``(``\$h` `* 60 + ``\$m``);``    ``\$minute_angle` `= 6 * ``\$m``;` `    ``// Find the difference``    ``// between two angles``    ``\$angle` `= ``abs``(``\$hour_angle` `-``                 ``\$minute_angle``);` `    ``// Return the smaller angle``    ``// of two possible angles``    ``\$angle` `= min(360 - ``\$angle``,``                       ``\$angle``);``    ` `    ``return` `\$angle``;``}` `// Driver Code``echo` `calcAngle(9, 60), ``"\n"``;``echo` `calcAngle(3, 30), ``"\n"``;` `// This code is contributed by ajit``?>`

## Javascript

 ``

Output

```60
75```

Time Complexity: O(1)

Auxiliary Space: O(1)
Exercise: Find all times when hour and minute hands get superimposed.