# Calculate the angle between hour hand and minute hand

• Difficulty Level : Easy
• Last Updated : 09 Mar, 2021

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.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

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`

## Python

 `# 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)
Exercise: Find all times when hour and minute hands get superimposed.