#!/usr/bin/env python # coding: utf-8 #
#
#
#
ObsPy Tutorial
#
Handling Time
#
#
#
# image: User:Abbaszade656 / Wikimedia Commons / CC-BY-SA-4.0 # ## Workshop for the "Training in Network Management Systems and Analytical Tools for Seismic" # ### Baku, October 2018 # # # Seismo-Live: http://seismo-live.org # # ##### Authors: # * Lion Krischer ([@krischer](https://github.com/krischer)) # * Tobias Megies ([@megies](https://github.com/megies)) # # --- # ![](images/obspy_logo_full_524x179px.png) # This is a bit dry but not very difficult and important to know. It is used **everywhere** in ObsPy! # # # * All absolute time values are consistently handled with this class. # * Based on a nanosecond precision POSIX integer timestamp for accuracy. # * Timezone can be specified at initialization (if necessary). # * In Coordinated Universal Time (UTC) so no need to deal with timezones, daylight savings, ... # # --- # In[ ]: get_ipython().run_line_magic('matplotlib', 'inline') from __future__ import print_function import matplotlib.pyplot as plt plt.style.use('ggplot') plt.rcParams['figure.figsize'] = 12, 8 # --- # # ## Features of **`UTCDateTime`** # # #### Initialization # In[ ]: from obspy import UTCDateTime print(UTCDateTime("2014-08-24T10:20:44.0")) # mostly time strings defined by ISO standard print(UTCDateTime("2014-08-24T01:20:44.0-09:00")) # non-UTC timezone input print(UTCDateTime(2014, 8, 24, 10, 20, 44)) # year, month, day, hour, min, sec, musec print(UTCDateTime(1408875644.0)) # timestamp # In[ ]: # Current time can be initialized by leaving out any arguments print(UTCDateTime()) # #### Attribute Access # In[ ]: time = UTCDateTime("2014-08-24T10:20:44.0") print(time.year) print(time.julday) print(time.timestamp) print(time.weekday) # try time. # #### Handling time differences # # * "**`+`**/**`-`**" defined to add seconds to an **`UTCDateTime`** object # * "**`-`**" defined to get time difference of two **`UTCDateTime`** objects # In[ ]: time = UTCDateTime("2014-08-24T10:20:44.0") print(time) # In[ ]: # one hour later print(time + 3600) # In[ ]: # Time differences time2 = UTCDateTime(2015, 1, 1) print(time2 - time) # ### Exercises # # Calculate the number of days passed since the 2014 South Napa earthquake (the timestamp used above). # In[ ]: print((UTCDateTime() - UTCDateTime("2014-08-24T11:20:44.000000Z")) / 86400) # Make a list of 10 UTCDateTime objects, starting today at 10:00 with a spacing of 90 minutes. # In[ ]: # Below is a list of strings with origin times of magnitude 8+ earthquakes since 2000 (fetched from IRIS). Assemble a list of interevent times in days. Use matplotlib to display a histogram. # In[ ]: times = ["2000-11-16T04:54:56", "2001-06-23T20:33:09", "2003-09-25T19:50:07", "2004-12-23T14:59:00", "2004-12-26T00:58:52", "2005-03-28T16:09:35", "2006-05-03T15:26:39", "2006-06-01T18:57:02", "2006-06-05T00:50:31", "2006-11-15T11:14:14", "2007-01-13T04:23:23", "2007-04-01T20:39:56", "2007-08-15T23:40:58", "2007-09-12T11:10:26", "2009-09-29T17:48:11", "2010-02-27T06:34:13", "2011-03-11T05:46:23", "2012-04-11T08:38:37", "2012-04-11T10:43:10", "2013-05-24T05:44:49", "2014-04-01T23:46:47", "2015-09-16T22:54:32", "2017-09-08T04:49:21"] # In[ ]: