VT_DATE转_bstr_t谁研究的比较深入?问个问题

r_swordsman 2018-07-13 05:18:44

_variant_t vt;
vt.vt = VT_DATE;
vt.date = 34455.00079;
WCHAR* strppp = (_bstr_t)vt;

strppp 的结果为:1994/5/1 0:01:08
那么为什么是 yyyy/M/d 这样的格式?
然后我试了一下,和控制面板的区域设置有关,
那么我不修改区域设置,能否单独修改此程序的时间格式为 yyyy-MM-dd,不影响其他程序?
将VT_DATE转换成DATETIME什么的类型然后再格式化,这个就不用说了。
也就是怎么修改这个转换的默认日期格式?
...全文
271 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
r_swordsman 2018-07-21
  • 打赏
  • 举报
回复
引用 1 楼 qq_26664187 的回复:
你可以不用系统时间,你可以从网上爬一个。。

或者如果有方法的话,你在程序初始化的时候,就把区域设置设置好?


这种方法会影响其他程序,或者进程非正常退出,还原不了
r_swordsman 2018-07-21
  • 打赏
  • 举报
回复
引用 3 楼 yiyefangzhou24 的回复:
单单改格式为什么一定要用函数呢,变通一下不是很好吗,直接替换/符号不是很好吗
string datastring();//初始化为string类型,或者其他字符串类型
datestring.replaceAll("/", "-");


纯技术研究,看看vdate是如何转换成字符串的,格式怎么控制
r_swordsman 2018-07-21
  • 打赏
  • 举报
回复
引用 2 楼 zwfgdlc 的回复:

SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, L"yyyy-mm-dd");
_variant_t vt;
vt.vt = VT_DATE;
vt.date = 34455.00079;
WCHAR* strppp = (_bstr_t)vt;
SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, L"yyyy/mm/dd");

似乎没什么完美的办法,可以先设置好自定义的时间模式,执行完后再改回去

这种方法会影响其他程序,或者进程非正常退出,还原不了
赵4老师 2018-07-21
  • 打赏
  • 举报
回复
COleDateTime.Format
yiyefangzhou24 2018-07-16
  • 打赏
  • 举报
回复
单单改格式为什么一定要用函数呢,变通一下不是很好吗,直接替换/符号不是很好吗
string datastring();//初始化为string类型,或者其他字符串类型
datestring.replaceAll("/", "-");
Votangroom 2018-07-14
  • 打赏
  • 举报
回复
你可以不用系统时间,你可以从网上爬一个。。

或者如果有方法的话,你在程序初始化的时候,就把区域设置设置好?
zwfgdlc 2018-07-14
  • 打赏
  • 举报
回复

SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, L"yyyy-mm-dd");
_variant_t vt;
vt.vt = VT_DATE;
vt.date = 34455.00079;
WCHAR* strppp = (_bstr_t)vt;
SetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, L"yyyy/mm/dd");

似乎没什么完美的办法,可以先设置好自定义的时间模式,执行完后再改回去

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧