Implementación de código de la estructura DateTime y conversión de cadenas

  • Descripción del problema

Personalice una estructura DateTime, el código es el siguiente:

//定义DateTime结构体
struct DateTime
{
	short year;
	short month;
	short day;
	short hour;
	short minute;
	short second;
};

Cómo convertir el objeto DateTime en un formato de cadena como "AAAA-MM-DD hh: mm: ss", o utilizar la cadena para asignar un valor al objeto DateTime para facilitar la comparación de horas.

  • solución

Defina una función de conversión para convertir una cadena en una estructura DateTime , el código es el siguiente:

//接受3个参数,分别为字符串首地址,起始位置,计算长度
short SubStringToShort(const char *str, int begin, int len)
{
	int res = 0;
	for (int i = begin; i < begin+len; ++i)
	{
		int tmp = str[i] - '0';	//将字符型转化为整型
		res *= 10;
		res += tmp;
	}
	return (short)res;
}


//将字符串转换为DateTime结构体
DateTime *StringToDateTime(const char *str)
{
	DateTime *dt = new DateTime();

	//字符串必须符合特定格式(YYYY-MM-DD hh:mm:ss)
	int len = strlen(str);
	if (len != 19)
	{
		cout << "Invalid time string: " << str << endl;
		return nullptr;
	}
	//给year成员赋值
	short *p = (short *)dt + 1;
	dt->year = SubStringToShort(str, 0, 4);
	for (int i = 0; i < 5; ++i)
	{
		//给DateTime剩余的成员赋值,以short指针类型后移来获取成员内存地址
		*(p+i) = SubStringToShort(str, 5+i*3, 2);
	}

	return dt;
}

Convierta la estructura DateTime en una cadena , el código es el siguiente:

//将DateTime结构体转换为字符串
char *DateTimeToString(const DateTime *dt)
{
	char *str = new char[19];
	//使用sprintf库函数,格式化字符串,注意格式控制符的使用
	sprintf(str, "%04d-%02d-%02d %02d:%02d:%02d", dt->year, dt->month, dt->day, 
		dt->hour, dt->minute, dt->second);
	return str;	
}
  • para resumir

Esta solución es relativamente simple y requiere un formato de cadena específico.

En circunstancias normales, la estructura DateTime en este ejemplo es de tipo corto porque las variables miembro son de tipo corto, por lo que el orden en la memoria es de byte bajo a byte alto, y puede usar el método de incremento de puntero corto para obtener cada variable miembro Abordar y asignar valores.

 

 

 

Supongo que te gusta

Origin blog.csdn.net/gkzscs/article/details/82943780
Recomendado
Clasificación