U
    x\(d                     @   s  d dl mZ d dlmZ d dlZd dlZd dlZdZdZdZdZ	dZ
d	Zd
Zee
ZeeZddddgddddgddddgddddgddddgddddgddddgddddgddddgd dddgddddgd d!ddgd"d#ddgd$d%ddgd&d'ddgd(d)ddgdd*ddgd+d,ddgd-d.ddgd/d0ddgd1d2ddgd3d4ddgd5d6ddgd7d8ddgd9d:ddgd;d<ddgd=d>ddgd?d@ddggZdAdB ZeZdCdD ZeZdQdEdFZdGdH ZdIdJ ZdKdL ZdMdN ZG dOdP dPeZdS )R    )timegm)datetimeN)ZSunZMonZTueZWedZThuZFriZSat)ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDec)abcdefghijklmnopqrstuvwx0)      r      r   r   r   r   r   r   r   r   )     r!      r   r   )  r!      r   r   r   g    +@ii  r!   i   ii  ii  i  i  i  i  i  r#   i     i     i     i     i  r$   i  i     i  	   i  
   i     i  r"   i     i     i     i     i     i     i  c                 C   s   t | t d  S )Ng     @)MJD2000T2000)r    r;   /var/www/ahpy/Gpstime.pytsys_mjd3   s    r=   c                 C   s   ddddddg}t t| D ]}| | ||< q|d dk rh|d dk rX|d  d7  < n|d  d7  < d|d   krdksn td|d d}|d	 r|d	 t|d	  }t|S )
Nr   r!   d   F   r    l  r"   zmonth must fit between 1 12r.   )rangelen
ValueErrormathfloorr   )Zdhdtallr   sdecr;   r;   r<   _datetime_t6   s    rH   c                 C   sZ   t tttD ]D}t| d }|}|r,d}tt| dd  }| | |kr|  S qdS )Nr   r!   i)reversedrA   rB   GPSUTCrH   )r   ZUTCr   leapaddttr;   r;   r<   _gpsutcJ   s    
rN   c                 C   s8   | d dkrdS | d dkr dS | d dkr0dS dS d S )Ni  r   Tr>   Fr-   r;   )yyyyr;   r;   r<   _is_lpyU   s    rP   c                 C   sj   t | rdnd}g }d}d}tttD ]<}|| }|t| 7 }|dkrP||7 }||kr(||f  S q(d S )Nr!   r   )rP   rA   rB   DAYS_IN_MONTH)rO   doyZadd_dayZjelZnjjnjmr   r;   r;   r<   _doy_mon_   s    rT   c                 C   s   t | d\}}d| |fS )NQ ic  )divmod)tsZndsecr;   r;   r<   _ellapsed_fm_1900l   s    rY   c                 C   s  t | \}}|dks|dk rl|d d }|d |d  }t|d\}}d|d  | }|dkrf|d n|}nd}|d }t||\}	}
|	d7 }	|dkrt|d d nt|d d d }t|d	 }t||d	  d
 }||d	  |d
  }tt|t|	t|
||||t|df	S )Nim  r   i  im  r-   r!   r@   r%     <   )rY   rV   rT   inttimestruct_time)rW   ZdaysrX   ZncyZrmndaysZnyZydayrO   rR   monrS   ZwdayZhhZmmssr;   r;   r<   	_mygmtimep   s     ,ra   c                   @   s   e Zd ZdddZdddZdd Zdd	 Zdd
dZdddZd ddZ	d!ddZ
dd Zdd Zdd Zd"ddZeZeZdS )#Gpstimer   c                 C   sN   |rt || _|| _n(t }t t|d| _t|| j | _| | j d S )Nr!   )rN   gpsutctsysr]   gmtimer   t_date_time)selfrd   nowr;   r;   r<   __init__   s    
zGpstime.__init__c                 C   s$  |rt || _|| j | _n(t }t t|d| _t|| j | _| jt| j }t| j| _	t| j| j | _
t| jd | _t| jd d | _i }i }|dkrt| j}t| j| j }nt| j}t| j| j }d}|j| _| j| jd d  }|dkrt|n
dt| | _|j| _|j| _|j| _|j| _|j| | _|j| _|jd d | _| jt  d	 d | _!| jt  | j!d	 d  | _"| jd
 | jd  | j | _#t$| j | _%t&| j | _'t(| jd  | _)dtt*| j | _+| j| jd  | _,|j|j|j|j|j|j| g| _-| S )zSet GPS time elements.r!      gd;O@@r   r>   r1   r   r%   rU   rZ   r[   zlp_y = g     v@).rN   rc   rd   r]   re   r   rD   rE   _t_mjdmjdZmjdutcZmjdtaimjdttra   tm_yearrO   stryytm_monr_   tm_mdaydaytm_hourhourtm_minmintm_secrX   tm_ydayrR   tm_wdaydowTGPS0wksowZsodSESIDsesDAYdaynameMONZmonnamerP   lpyZydecZdateutc)rg   rd   rh   rG   Zdat_timZdat_timurp   r;   r;   r<   rf      sV    

   zGpstime.t_date_timec                 C   s   t |}| | | S N)rH   rf   )rg   Zarrrd   r;   r;   r<   date_time_t   s    
zGpstime.date_time_tc                 C   s   t |t d  }| | | S NrU   )r:   r9   rf   )rg   rl   rd   r;   r;   r<   mjd_t   s    
zGpstime.mjd_tc                 C   s"   t |d d  | }| | | S )NrU   r%   r|   rf   )rg   r}   r~   rd   r;   r;   r<   gpswks_t   s    
zGpstime.gpswks_tc                 C   s"   t |d | d  }| | | S Nr%   rU   r   )rg   r}   r{   rd   r;   r;   r<   gpswkd_t   s    
zGpstime.gpswkd_tNc                 C   sR   t |g|d d  }|rDtdD ] }|t| kr"||d 7 } qDq"| | | S )Nr!   rU      rZ   )rH   rA   r   rf   )rg   rO   rR   r   rd   r   r;   r;   r<   
yyyydoys_t   s    
zGpstime.yyyydoys_t c           	      C   s   t  }|rtd|| tdt|}g }tt|d D ]}|t	||  q<|t
|t|d   t|}t|d}|| }| |S )Nz TNOW:z[-:\s]r!   )r   Zutcnowprintresplitro   rA   rB   appendr\   floatrH   rN   rf   )	rg   titleZt0rM   Ztttr   t1Zgutcrd   r;   r;   r<   just_now   s    
zGpstime.just_nowc                 C   s   | j | }| | | S r   rd   rf   )rg   r   r   r;   r;   r<   add_s   s    

zGpstime.add_sc                 C   s   | j |d  }| | | S r   r   )rg   r   r   r;   r;   r<   add_d   s    
zGpstime.add_dc                 C   s    | j |d d  }| | | S r   r   )rg   r   r   r;   r;   r<   add_w   s    
zGpstime.add_wc                 C   s@   |d | j| j| j| j| j| j| j| j| j	| j

 }t| d S )Nz@> {} {:02d} {:02d} {:02d} {:02d} {:10.7f} {} {:015.9f} {:4d} {} )formatrO   r_   rs   ru   rw   rX   r   rl   rc   r   r   )rg   r   r   r;   r;   r<   pr_eprx3  s          zGpstime.pr_eprx3)r   )r   )r   )r   )r   N)r   )r   )__name__
__module____qualname__ri   rf   r   r   r   r   r   r   r   r   r   r   rP   Zis_lpyrN   rc   r;   r;   r;   r<   rb      s   

3


	

rb   )r   )Zcalendarr   r   r]   rD   r   r   r   r   rQ   Zd2000ZdGPS0r9   r:   r|   rJ   r=   rk   rH   Z
datetime_trN   rP   rT   rY   ra   objectrb   r;   r;   r;   r<   <module>   sh   



























"

