DataAnalysis2022/ObsPy/02_UTCDateTime.ipynb

2 lines
5.4 KiB
Plaintext

{"cells":[{"cell_type":"markdown","metadata":{},"source":["<div style='background-image: url(\"../images/header.svg\") ; padding: 0px ; background-size: cover ; border-radius: 5px ; height: 250px'>\n"," <div style=\"float: right ; margin: 50px ; padding: 20px ; background: rgba(255 , 255 , 255 , 0.7) ; width: 50% ; height: 150px\">\n"," <div style=\"position: relative ; top: 50% ; transform: translatey(-50%)\">\n"," <div style=\"font-size: xx-large ; font-weight: 900 ; color: rgba(0 , 0 , 0 , 0.8) ; line-height: 100%\">ObsPy Tutorial</div>\n"," <div style=\"font-size: large ; padding-top: 20px ; color: rgba(0 , 0 , 0 , 0.5)\">Handling Time</div>\n"," </div>\n"," </div>\n","</div>"]},{"cell_type":"markdown","metadata":{},"source":["Seismo-Live: http://seismo-live.org\n","\n","##### Authors:\n","* Lion Krischer ([@krischer](https://github.com/krischer))\n","* Tobias Megies ([@megies](https://github.com/megies))\n","\n","---"]},{"cell_type":"markdown","metadata":{},"source":["![](images/obspy_logo_full_524x179px.png)"]},{"cell_type":"markdown","metadata":{},"source":["This is a bit dry but not very difficult and important to know. It is used everywhere in ObsPy!\n","\n","\n","* All absolute time values are consistently handled with this class\n","* Based on a double precision POSIX timestamp for accuracy\n","* Timezone can be specified at initialization (if necessary)\n","* In Coordinated Universal Time (UTC) so no need to deal with timezones, daylight savings, ...\n","\n","---"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["%matplotlib inline\n","import matplotlib.pyplot as plt\n","plt.style.use('ggplot')\n","plt.rcParams['figure.figsize'] = 12, 8"]},{"cell_type":"markdown","metadata":{},"source":["---\n","\n","## Features of **`UTCDateTime`**\n","\n","#### Initialization"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["from obspy import UTCDateTime\n","\n","print(UTCDateTime(\"2011-03-11T05:46:23.2\")) # mostly time strings defined by ISO standard\n","print(UTCDateTime(\"2011-03-11T14:46:23.2+09:00\")) # non-UTC timezone input\n","print(UTCDateTime(2011, 3, 11, 5, 46, 23, 2))\n","print(UTCDateTime(1299822383.2))"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# Current time can be initialized by leaving out any arguments\n","print(UTCDateTime())"]},{"cell_type":"markdown","metadata":{},"source":["#### Attribute Access"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["time = UTCDateTime(\"2011-03-11T05:46:23.200000Z\")\n","print(time.year)\n","print(time.julday)\n","print(time.timestamp)\n","print(time.weekday)\n","# try time.<Tab>"]},{"cell_type":"markdown","metadata":{},"source":["#### Handling time differences\n","\n","* \"**`+`**/**`-`**\" defined to add seconds to an **`UTCDateTime`** object\n","* \"**`-`**\" defined to get time difference of two **`UTCDateTime`** objects"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["time = UTCDateTime(\"2011-03-11T05:46:23.200000Z\")\n","print(time)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["# one hour later\n","print(time + 3600)"]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["time2 = UTCDateTime(2012, 1, 1)\n","print(time2 - time)"]},{"cell_type":"markdown","metadata":{},"source":["### Exercises\n","\n","Calculate the number of days passed since the Tohoku main shock (the timestamp used above)."]},{"cell_type":"code","execution_count":null,"metadata":{"lines_to_next_cell":2,"tags":["exercise"]},"outputs":[],"source":[]},{"cell_type":"code","execution_count":null,"metadata":{"tags":["solution"]},"outputs":[],"source":[]},{"cell_type":"markdown","metadata":{},"source":["Make a list of 10 UTCDateTime objects, starting today at 10:00 with a spacing of 90 minutes."]},{"cell_type":"code","execution_count":null,"metadata":{"lines_to_next_cell":2,"tags":["exercise"]},"outputs":[],"source":[]},{"cell_type":"code","execution_count":null,"metadata":{"tags":["solution"]},"outputs":[],"source":[]},{"cell_type":"markdown","metadata":{},"source":["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."]},{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":["times = [\"2001-06-23T20:33:09\",\n"," \"2003-09-25T19:50:07\",\n"," \"2004-12-23T14:59:00\",\n"," \"2004-12-26T00:58:52\",\n"," \"2005-03-28T16:09:35\",\n"," \"2006-06-01T18:57:02\",\n"," \"2006-06-05T00:50:31\",\n"," \"2006-11-15T11:14:14\",\n"," \"2007-01-13T04:23:23\",\n"," \"2007-04-01T20:39:56\",\n"," \"2007-08-15T23:40:58\",\n"," \"2007-09-12T11:10:26\",\n"," \"2009-09-29T17:48:11\",\n"," \"2010-02-27T06:34:13\",\n"," \"2011-03-11T05:46:23\",\n"," \"2012-04-11T08:38:36\",\n"," \"2012-04-11T10:43:10\",\n"," \"2013-05-24T05:44:48\"]"]},{"cell_type":"code","execution_count":null,"metadata":{"lines_to_next_cell":2,"tags":["exercise"]},"outputs":[],"source":[]},{"cell_type":"code","execution_count":null,"metadata":{"tags":["solution"]},"outputs":[],"source":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2}