我有一个属性(string
)以此格式命名为cdate
25/01/2019 12:41:50 AM
我希望我的输出看起来像这样
01/25/2019 12:41:50 AM
我的代码抛出了无效的强制转换异常错误。
我是C#
的新秀
我已经尝试过了,但是没有用
cdate.ToString("MM/dd/yyyy hh:mm:ss")
答案 0 :(得分:1)
属性cdate
的类型是什么?我假设它的类型为DateTime
,并且我也假设您正在尝试执行以下操作:
cdate = cdate.ToString("MM/dd/yyyy hh:mm:ss")
在这种情况下,您将获得强制转换异常异常,因为您试图将string
值分配给DateTime
变量(DateTime.ToString
返回string
)。 / p>
您可能应该将其分配给新的字符串变量,而不要尝试将其分配给cdate
。
编辑:
由于cdate
的类型为string
,因此应使用DateTime
方法将其强制转换为ToString
对象,以将其转换为所需的格式。
cdate = DateTime
.ParseExact(cdate, "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture)
.ToString("MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
答案 1 :(得分:1)
正如您在对另一个答案的评论中所言cdate
的类型为string
。
您需要将字符串解析为DateTime
,然后调用ToString()
将日期设置为适当的格式
var cdate = "25/01/2019 12:41:50 AM";
var dt = DateTime.ParseExact(cdate, "dd/MM/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
cdate = dt.ToString("MM/dd/yyyy hh:mm:ss tt");
这将使用CultureInfo.InvariantCulture
,否则/
和:
将被替换为当前区域性的日期和时间分隔符。
答案 2 :(得分:0)
尝试使用指定区域性格式(您要使用美国格式)尝试此操作。正是cdate是这里的DateTime实例。
cdate.ToString("G", CultureInfo.CreateSpecificCulture("en-us"));
如果要从字符串中解析DateTime:
DateTime dt = DateTime.Parse(cdate, CultureInfo.CreateSpecificCulture("en-us"));