time_t 的使用

#include "stdafx.h"
#include <process.h>
#include <iostream>
#include <time.h>
using namespace std;

bool GetCurrTime(char* lpszTime)
{
	time_t rt={0};
	tm* ptmInfo=NULL;

	try
	{
		time(&rt);
		ptmInfo=localtime(&rt);
		 
		sprintf(lpszTime,"%d-%d-%d %d:%d:%d",ptmInfo->tm_year+1900,ptmInfo->tm_mon+1,ptmInfo->tm_mday,ptmInfo->tm_hour,ptmInfo->tm_min,ptmInfo->tm_sec);
	}
	catch (...)
	{
		return false;
	}
	 return true;
}
int _tmain(int argc, _TCHAR* argv[])
{

	char szTime[260];
	memset(szTime,0,260);
	GetCurrTime(szTime);
	cout<<szTime<<endl;
	system("pause");
	return 0;
}

<think>根据用户要求,需要将赋值操作改为先定义变量再赋值。同时保持原有的变量命名规范不变。 原代码是定义的同时进行赋值,现在改为先定义(声明)变量,然后再分别赋值。 注意:用户要求“先定义再赋值”,所以我们将每个变量的定义和赋值分开两步进行。 同时,保持原有的类型转换和逻辑不变。 注意:u1_t_time_h12和u1p_t_ampm这两个变量需要根据前面的变量计算得到,所以它们的赋值要放在相关变量赋值之后。</think>### 先定义后赋值实现 ```c /* 定义变量 */ U2 u2_t_time_y; U1 u1_t_time_m; U1 u1_t_time_d; U1 u1_t_time_h24; U1 u1_t_time_min; U1 u1_t_time_sec; U1 u1_t_time_w; U1 u1_t_time_h12; const U1* u1p_t_ampm; /* 赋值操作 */ u2_t_time_y = (U2)stp_a_time_t->wYear; u1_t_time_m = (U1)stp_a_time_t->wMonth; u1_t_time_d = (U1)stp_a_time_t->wDay; u1_t_time_h24 = (U1)stp_a_time_t->wHour; u1_t_time_min = (U1)stp_a_time_t->wMinute; u1_t_time_sec = (U1)stp_a_time_t->wSecond; u1_t_time_w = (U1)stp_a_time_t->wDayOfWeek; u1_t_time_h12 = (u1_t_time_h24 % 12 == 0) ? 12 : u1_t_time_h24 % 12; // 修复12点显示 u1p_t_ampm = (u1_t_time_h24 >= 12) ? "PM" : "AM"; ``` ### 关键说明 1. **变量定义与赋值分离** - 所有变量先声明(定义)类型 - 随后进行独立赋值操作 - 符合"先定义后使用"原则 2. **类型转换保护** ```mermaid graph LR A[原始时间结构] --> B[类型转换] B --> C{U2 用于年份} B --> D{U1 用于其他} D --> E[确保值域安全] ``` 3. **12小时制处理逻辑** - 特殊处理12点:`u1_t_time_h24 % 12 == 0 ? 12 : ...` - AM/PM判断:基于24小时值判断上下午 - 使用三目运算符保持代码简洁 4. **内存与类型安全** - U1/U2类型确保匹配目标硬件 - 指针u1p_t_ampm指向字符串常量 - 显式类型转换避免隐式转换风险 ### 使用示例 ```c // 打印格式化时间 printf("日期: %u-%02u-%02u %s\n", u2_t_time_y, u1_t_time_m, u1_t_time_d, cpc_s_time_weeken[u1_t_time_w]); printf("时间: %u:%02u:%02u %s\n", u1_t_time_h12, u1_t_time_min, u1_t_time_sec, u1p_t_ampm); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值