⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fits_util.cpp

📁 本源码是一个用于卫星数据处理的程序
💻 CPP
字号:
#include <string.h>
#include "StdAfx.h"
#include "fits_util.h"
/*****************************************************
** 函数名: strUTC2time
** 输入: str
**        str    --- 年月日时分秒格式的时间串
** 输出: res, 
**        res --- 通过res返回对应输入时间串的时间结构,此时间结构以秒和微妙表示
** 调用说明:	
**							
** 功能描述:把以年月日时分秒格式的时间串转化成对应的时间结构形式
****************************************************************************************/
int strUTC2time( const char *str, timespec_t *res )
{
	if( str == NULL || res == NULL )
		return -1;

	struct tm t;
	sscanf( str, "%d-%d-%dT%d:%d:%d", &t.tm_year, &t.tm_mon, 
						&t.tm_mday, &t.tm_hour, &t.tm_min, &t.tm_sec );//按指定格式从str中读数据到tm中
	t.tm_year -= 1900;
	t.tm_mon--; 
	t.tm_isdst = 0;
	if( (res->time = mktime(&t)) == -1 )
		return -1;

	char *p = strchr(str, '.');
	sscanf( p+1, "%d", &res->usec );
		
	return 0;
}

/*****************************************************
** 函数名: time2strUTC
** 输入: buffer,len, t 
**        buffer    --- 年月日时分秒格式的时间串
**        len       --- 字符串长度
**		  t         --- 表示时间的结构
** 输出: 
**        函数执行成功返回0
** 调用说明:	
**							
** 功能描述:把以时间结构形式表示的时间转化成年月日时分秒微妙形式的时间串
****************************************************************************************/
int time2strUTC( char *buffer, int len, const timespec_t *t )
{
	if( buffer == NULL || len < 27 || t == NULL )
		return -1;
	struct tm *tm = localtime(&t->time);

	if( !tm )
		return -1;
	sprintf( buffer, "%.4d-%.2d-%.2dT%.2d:%.2d:%.2d:%.6dZ", tm->tm_year+1900, tm->tm_mon+1, 
				tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, t->usec);
	return 0;

	return -1;//??
}
/*****************************************************
** 函数名: time2strUTC
** 输入: buffer,len, t 
**        buffer    --- 年月日时分秒格式的时间串
**        len       --- 字符串长度
**		  t         --- 表示时间的结构
** 输出: 
**        函数执行成功返回0
** 调用说明:	
**							
** 功能描述:把以时间结构形式表示的时间转化成年月日时分秒形式的时间串
****************************************************************************************/
int time2strUTC_fitshead( char *buffer, int len, const timespec_t *t )
{
	if( buffer == NULL || len < 27 || t == NULL )
		return -1;
	struct tm *tm = localtime(&t->time);

	if( !tm )
		return -1;
	sprintf( buffer, "%.4d-%.2d-%.2dT%.2d:%.2d:%.2d", tm->tm_year+1900, tm->tm_mon+1, 
				tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec);
	return 0;

	return -1;//?
}

/*****************************************************
** 函数名: hxmtname2time
** 输入: str, 
**        str    --- 文件名中的时间串
** 输出: t 
**        t  ------- 秒数
** 调用说明:	
**							
** 功能描述:把文件名中的时间串转化为对应的时间秒
****************************************************************************************/
int hxmtname2time( const char *str, time_t *t )
{
	if( str == NULL || t == NULL )
		return -1;
	
	struct tm time;
	int tmp[14];
	for( int i = 0; i < 14; i++ )
		tmp[i] = str[i] - '0';

	time.tm_year = tmp[0]*1000 + tmp[1]*100 + tmp[2]*10 + tmp[3] - 1900;
	time.tm_mon = tmp[4]*10 + tmp[5] - 1;
	time.tm_mday = tmp[6]*10 + tmp[7];
	time.tm_hour = tmp[8]*10 + tmp[9];
	time.tm_min = tmp[10]*10 + tmp[11];
	time.tm_sec = tmp[12]*10 + tmp[13];
	time.tm_isdst = 0;

	if( (*t = mktime(&time)) == -1 )
		return -1;

	return 0;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -