# Converting Between Decimal Degrees and Hours, Minutes, Seconds

Here’s a quick Python snippet I wrote to convert right ascension in decimal degrees to hours, minutes, seconds and declination to (+/-)degrees, minutes, seconds.

```def deg2HMS(ra='', dec='', round=False):   RA, DEC, rs, ds = '', '', '', ''   if dec:     if str(dec)[0] == '-':       ds, dec = '-', abs(dec)     deg = int(dec)     decM = abs(int((dec-deg)*60))     if round:       decS = int((abs((dec-deg)*60)-decM)*60)     else:       decS = (abs((dec-deg)*60)-decM)*60     DEC = '{0}{1} {2} {3}'.format(ds, deg, decM, decS)      if ra:     if str(ra)[0] == '-':       rs, ra = '-', abs(ra)     raH = int(ra/15)     raM = int(((ra/15)-raH)*60)     if round:       raS = int(((((ra/15)-raH)*60)-raM)*60)     else:       raS = ((((ra/15)-raH)*60)-raM)*60     RA = '{0}{1} {2} {3}'.format(rs, raH, raM, raS)      if ra and dec:     return (RA, DEC)   else:     return RA or DEC```

For example:
```In [1]: f.deg2HMS(ra=66.918277) Out[1]: '4 27 40.386'```

Or even:
```In [2]: f.deg2HMS(dec=24.622590) Out[2]: '+24 37 21.324'```

Or if you want to round the seconds, just do:
```In [3]: f.deg2HMS(dec=24.622590,round=True) Out[3]: '+24 37 21'```

And to convert hours, minutes and seconds into decimal degrees, we have:

```def HMS2deg(ra='', dec=''):   RA, DEC, rs, ds = '', '', 1, 1   if dec:     D, M, S = [float(i) for i in dec.split()]     if str(D)[0] == '-':       ds, D = -1, abs(D)     deg = D + (M/60) + (S/3600)     DEC = '{0}'.format(deg*ds)      if ra:     H, M, S = [float(i) for i in ra.split()]     if str(H)[0] == '-':       rs, H = -1, abs(H)     deg = (H*15) + (M/4) + (S/240)     RA = '{0}'.format(deg*rs)      if ra and dec:     return (RA, DEC)   else:     return RA or DEC```

So we can get back our decimal degrees with:

```In [4]: f.HMS2deg(ra='4 27 40.386', dec='+24 37 21.324') Out[4]: (66.918, 24.622)```