You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.7 KiB
C
119 lines
3.7 KiB
C
/***************************************************************************
|
|
* A program illustrating time string parsing and generation support.
|
|
*
|
|
* This file is part of the miniSEED Library.
|
|
*
|
|
* Copyright (c) 2023 Chad Trabant, EarthScope Data Services
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
***************************************************************************/
|
|
|
|
#include <libmseed.h>
|
|
|
|
int
|
|
main (int argc, char **argv)
|
|
{
|
|
char *timestr;
|
|
char generated_timestr[40];
|
|
nstime_t nstime;
|
|
int idx;
|
|
|
|
if (argc < 2)
|
|
{
|
|
ms_log (0, "Usage: %s timestring1 [timestring2] [timestring3] [...]\n", argv[0]);
|
|
return 1;
|
|
}
|
|
|
|
for (idx = 1; idx < argc; idx++)
|
|
{
|
|
timestr = argv[idx];
|
|
|
|
printf ("Input time : %s\n", timestr);
|
|
|
|
/* Convert time string to epoch format */
|
|
nstime = ms_timestr2nstime (timestr);
|
|
|
|
if (nstime == NSTERROR)
|
|
{
|
|
ms_log (2, "Cannot convert time string to epoch format: '%s'\n", timestr);
|
|
return 1;
|
|
}
|
|
|
|
/* Convert epoch time to ISO month-day time string */
|
|
if (!ms_nstime2timestr (nstime, generated_timestr, ISOMONTHDAY, NANO_MICRO_NONE))
|
|
{
|
|
ms_log (2, "Cannot convert epoch to ISOMONTHDAY time string\n");
|
|
return 1;
|
|
}
|
|
|
|
printf ("ISOMONTH : %s\n", generated_timestr);
|
|
|
|
/* Convert epoch time to ISO month-day time string with Z designator */
|
|
if (!ms_nstime2timestr (nstime, generated_timestr, ISOMONTHDAY_Z, NANO_MICRO_NONE))
|
|
{
|
|
ms_log (2, "Cannot convert epoch to ISOMONTHDAY_Z time string\n");
|
|
return 1;
|
|
}
|
|
|
|
printf ("ISOMONTH_Z : %s\n", generated_timestr);
|
|
|
|
/* Convert epoch time to ISO month-day with day-of-year time string */
|
|
if (!ms_nstime2timestr (nstime, generated_timestr, ISOMONTHDAY_DOY, NANO_MICRO_NONE))
|
|
{
|
|
ms_log (2, "Cannot convert epoch to ISOMONTHDAY_DOY time string\n");
|
|
return 1;
|
|
}
|
|
|
|
printf ("ISOMONTH_DOY : %s\n", generated_timestr);
|
|
|
|
/* Convert epoch time to ISO month-day with day-of-year time string with Z designator */
|
|
if (!ms_nstime2timestr (nstime, generated_timestr, ISOMONTHDAY_DOY_Z, NANO_MICRO_NONE))
|
|
{
|
|
ms_log (2, "Cannot convert epoch to ISOMONTHDAY_DOY_Z time string\n");
|
|
return 1;
|
|
}
|
|
|
|
printf ("ISOMONTH_DOY_Z: %s\n", generated_timestr);
|
|
|
|
/* Convert epoch time to SEED-style ordinal (day-of-year) time string */
|
|
if (!ms_nstime2timestr (nstime, generated_timestr, SEEDORDINAL, NANO_MICRO_NONE))
|
|
{
|
|
ms_log (2, "Cannot convert epoch to SEEDORDINAL time string\n");
|
|
return 1;
|
|
}
|
|
|
|
printf ("SEEDORDINAL : %s\n", generated_timestr);
|
|
|
|
/* Convert epoch time to Unix epoch time string */
|
|
if (!ms_nstime2timestr (nstime, generated_timestr, UNIXEPOCH, NANO_MICRO_NONE))
|
|
{
|
|
ms_log (2, "Cannot convert epoch to UNIXEPOCH time string\n");
|
|
return 1;
|
|
}
|
|
|
|
printf ("UNIXEPOCH : %s\n", generated_timestr);
|
|
|
|
/* Convert epoch time to nanosecond epoch time string */
|
|
if (!ms_nstime2timestr (nstime, generated_timestr, NANOSECONDEPOCH, NANO_MICRO_NONE))
|
|
{
|
|
ms_log (2, "Cannot convert epoch to NANOSECONDEPOCH time string\n");
|
|
return 1;
|
|
}
|
|
|
|
printf ("NSEPOCH : %s\n", generated_timestr);
|
|
printf ("nstime_t : %" PRId64 "\n\n", nstime);
|
|
}
|
|
|
|
return 0;
|
|
}
|