2014-02-11 139 views
2

我有datetime存储在MSSQL数据库中的日期。在我的C++应用程序中,这些日期被拉出数据库并存储在一个CString中。C++ ParseDateTime() - SQL日期时间为英国日期

我想用COleDateTime的ParseDateTime()以很好的格式显示这些日期。不过,我发现它们以美式格式显示(MM/DD/YYYY),并按此排序。我希望他们以英国格式显示(MM/DD/YYYY)。我试过下面的代码没什么区别:

codt.ParseDateTime(sqlresults.GetItem(_T("date"),l),0,MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_UK)); 

谢谢!

+0

那么SUBLANG_ENGLISH_US是否解决了这个问题?如果不是,最好发布'sqlresults.GetItem(_T(“date”),l)'的输出。 – mockinterface

回答

1

ParseDateTime函数用于读取提供的值 - 对于您的情况,您从数据库中获取它并设置COleDateTime对象的内部表示形式。

您不是在此方法之后,而是在COleDateTime::Format方法之后。

codt.ParseDateTime(
    sqlresults.GetItem(_T("date"),l), 
    0, 
    MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); 
CString dateAsUkString = codt.Format(_T("%d/%m/%Y")); 
// display the dateAsUkString string in your view 
+0

对不起,如果我不清楚 - 我遇到的问题是,当我使用Format方法时,它显示的日期为月份,月份为日期。问题是,ParseDateTime在解析它时,会抓取字符串中的日期值并将其用作内部月份属性,反之亦然。 – Raiden616

+0

@ user1014679在这种情况下,您是否尝试切换到SUBLANG_ENGLISH_US? – mockinterface

相关问题