我有一个页面可以在用户选择时显示不同表格的内容。
这些表格包含DateTime
字段类型,但时间并不总是相关的,特别是当时间为00:00:00
时
这意味着,有时候要显示的表可能有一个BirthDate列,其中时间不相关,其他可能有CreatedOn,其中需要在视图中显示时间。
我无法专门为特定列设置格式,因为视图可以显示任何表,但是在后面的代码(C#)中,我能够识别列是否为DateTime类型并在displayng之前设置格式。 / p>
使用条件:
DataTable dt0 = dsDataSet.Tables[0].Copy();
foreach (DataColumn column in dt0.Columns)
{
if (column.DataType == typeof(System.DateTime))
{
var printDateFormat = dtfi.ShortDatePattern;
:..
:..
}
}
对于所有DateTime列,结果将为dd-MM-yyyy
,并且即使对于需要显示时间的列,也将删除列的时间。
理想的解决方案应该显示如下数据:
in DB -> DateTime |In Page View| in DB -> DateTime |In Page View |
===================|============|===================|===================|
BirthDate | |Created On | |
===================|============|===================|===================|
07/03/2014 00:00:00|07/03/2014 |05/03/2015 03:04:01|05/03/2015 03:04:01|
12/01/2014 00:00:00|12/01/2014 |03/01/2015 06:05:01|03/01/2015 06:05:01|
提前谢谢。
答案 0 :(得分:2)
我不确定这是多么有效,但这会消除您需要完成的时间:
首先将日期转换为DATE类型,然后将其重新命名为DATETIME
CAST(CAST(GETDATE() AS Date) AS Datetime)
但是,如果您只是在C#中格式化它,只需在DateTime字段上调用ToShortDateString()。
<强>更新强>
因此,您只需要显示非零时间的时间。在这种情况下,您可以:
测试小时,分钟和秒,以查看它们是否均为0。
var date = DateTime.Now;
var printDate = (date.Hour == 0 && date.Minute == 0 && date.Second == 0)
? date.ToShortDateString() : date.ToShortDateTimeString();
更新2
另一件事是获取一天中的时间,然后是总秒数。午夜时分为零。
var printDate2 = (date.TimeOfDay.TotalSeconds == 0)
? date.ToShortDateString() : date.ToShortDateTimeString();
答案 1 :(得分:0)
您可以创建一个新的DataTable,将DateTime列替换为字符串列,指定所需的格式。
df <- data.frame(region, date=paste(month, year, sep="-"), sales, inc_sales)
df
highchart() %>%
hc_chart(type = "column") %>%
hc_title(text = "Some Title") %>%
hc_add_series(name="Sales",data = df$sales ) %>%
hc_add_series(name="Inc Sales", data = df$inc_sales) %>%
hc_xAxis(categories = list(
list(
name = "Bavaria",
categories = list("11-2016","12-2016","1-2017","2-2017")
),
list(
name = "Berlin",
categories = list("11-2016","12-2016","1-2017","2-2017")
)
) )%>%
hc_plotOptions(column = list(stacking = "percent"))
答案 2 :(得分:0)
一种解决方案是向DateTime类添加一个自定义扩展方法,该方法返回您的自定义字符串格式(这可能会节省大量重复代码,并在以后提供单个位置来更改格式):
public static class Extensions
{
public static string GetCustomFormatString(this DateTime input,
bool excludeTimeIfZero = true)
{
return input.TimeOfDay == TimeSpan.Zero && excludeTimeIfZero
? input.ToString("MM/dd/yyyy")
: input.ToString("MM/dd/yyyy hh:mm:ss");
}
}
使用示例
private static void Main()
{
// DateTime.Now includes a non-zero time (except at midnight)
Console.WriteLine(DateTime.Now.GetCustomFormatString());
// A new DateTime has a zero time value
Console.WriteLine(new DateTime().GetCustomFormatString());
Console.WriteLine("\nDone!\nPress any key to exit...");
Console.ReadKey();
}
<强>输出强>