*******最近用到的日期时间的一些转换,及其一些基本知识的记录(没有逻辑先后顺序)**********************
1.转换的小Demo:
//将CString日期格式转成Ctime格式
BOOL CStringTimeToCtime(const CString strTmp, CTime &time)
{
//strTmp为2013-6-16格式的数据
CString strVal = strTmp;
int iFirst = strVal.Find('-');
int iSecond = strVal.Find('-', iFirst + 1);
int iYear = atoi(strVal.Left(iFirst));
int iMonth = atoi(strVal.Mid(iFirst + 1, iSecond - iFirst +1));
int iDay = atoi(strVal.Mid(iSecond + 1, strVal.GetLength() -iSecond - 1));
time = CTime(iYear, iMonth, iDay, 0, 0, 0);
return TRUE;
}
//日期格式化
BOOL DateFormat(CString &strTemp)
{
CTime time;
CStringTimeToCtime(strTemp, time);
strTemp = time.Format(_T("%Y-%m-%d"));
return TRUE;
}
2.ICU4C上记录下的关于时间的表格参照:
参考网站:点击打开链接
表1 不同长度的日期格式化
格式化长度类型 | 中文(简体) | 英语(美国) |
SHORT | 09-12-28 | 12/28/09 |
MEDIUM | 2009-12-28 | Dec 28, 2009 |
LONG | 2009 年 12 月 28 日 | December 28, 2009 |
FULL | 2009 年 12 月 28 日星期一 | Monday, December 28, 2009 |
SimpleDateFormat
是 DateFormat
的子类,它支持自定义的显示格式。该格式可以在类初始化时通过构造函数指定,可以在使用时通过接口“applyPattern
”指定。例如:“yyyy-MMMM-dd QQQQ EEEE HH:mm:ss
”
是一个自定义的格式,它的含义是按照“年 - 月 - 日 季度 星期 时 : 分 : 秒”的格式显示日期和时间。如果指定时刻为 2009 年 1 月 1 日上午 7 点 20 分 30 秒,Locale 是中文(简体),则相应的输出结果为:2009-01-01 第 1 季度 星期四 07:20:30。
由上例可见,ICU 定义了多种符号用来解析格式。表 2 列举了一些常用符号及其含义。完整的符号列表,可参见 参考资源中SimpleDateFormat
相关的
开发文档:
表2 SimpleDateFormat常用符号及其含义
符号 | 含义 | 示例 |
y | 年份 | 2009 |
Q | 季度 | 04 |
M | 月份 | 12 |
d | 日期 | 20 |
h | 小时(12 小时) | 10 |
H | 小时(24 小时) | 23 |
m | 分 | 50 |
s | 秒 | 20 |
E | 星期 | 星期三 |
D | 一年中的第几日 | 350 |
w | 一年中的第几周 | 50 |
表 2 所示了 SimpleDateFormat
中
不同符号的不同含义。在实际应用中,同一个符号出现的数目不同,其显示结果也不同。例如,“M”代表了月份的短格式,而“MMMM”则代表了月份的完整格式。表 3 列举了不同长度的月份符号“M”和季度符号“Q”在中文(简体)和英语(美国)下的不同显示结果:
表3 符号长度及其结果
符号 | 格式 | 中文(简体) | 英语(美国) |
M | M | 3 | 3 |
MM | 03 | 03 | |
MMM | 3 月 | Mar | |
MMMM | 3 月 | March | |
Q | Q | 4 | 4 |
04 | 04 | ||
QQQ | 4 季 | Q4 | |
QQQQ | 第 4 季度 | 4th quarter |
待续....