在c#我有时间格式hhmmss喜欢124510 12:45:10我需要知道TotalSeconds.我使用了TimeSpan.Parse("12:45:10").ToTalSeconds但它不采用格式hhmmss.转换它的任何好方法?
当用户填写表单时,他们使用下拉列表表示他们希望安排测试的时间.此下拉列表包含12小时上午/下午表格中15分钟增量的一天中的所有时间.因此,例如,如果用户选择下午4:15,则服务器将字符串发送"4:15 PM"到具有表单提交的Web服务器.
我需要一些如何将此字符串转换为Timespan,因此我可以将其存储在我的数据库的时间字段中(使用linq to sql).
有人知道将AM/PM时间字符串转换为时间跨度的好方法吗?
您可以为DateTime对象指定自定义格式,如下所示:
DateTime.Now.ToString("HH:mm:ss"); // 19:55:23
Run Code Online (Sandbox Code Playgroud)
但是当我尝试对TimeSpan这样的对象使用相同的格式时:
DateTime.Now.TimeOfDay.ToString("HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)
我得到了"Input string was not in a correct format."例外.
事实证明,解决方案是你需要逃避':'像中的字符"HH\\:mm\\:ss".请注意,有一个双反斜杠,因为如果您只指定一个,它将破坏字符串,因此您也需要转义该字符串.
问题是,为什么.NET Framework开发人员会这样做?必须有一个合理的理由.为什么我们不能使用自定义格式说明符而不像我们可以使用DateTime对象那样转义它们?
寻找.NET专家来阐明这个主题.
我想保存用户在数据库varchar列中工作的小时数,但默认情况下,如果小时数超过24,则格式化的值包括天数.我只想要总小时数.
例如:如果用户今天工作10:00:00,明天13:00:00,后天3:30:00,则我想要的格式化总数为26:30:00.相反,我看到的是1.2:30:00.
我怎样才能获得我想要的格式?
此外,当我手动将值40:00:00保存在数据库中,并尝试将其读入TimeSpan以后,我得到一个错误.
如何以我想要的方式保存数据库中的小时数,并且仍然可以将其读回TimeSpan以后?
在C#中有一个TimeSpan类.它表示一段时间,并从许多日期操作选项返回.您可以创建一个并添加或减去日期等.
在Ruby和特定的rails中,似乎有很多日期和时间类,但没有代表一段时间的东西?
理想情况下,我喜欢使用标准日期格式选项轻松输出格式化日期的对象.
例如.
ts.to_format("%H%M")
Run Code Online (Sandbox Code Playgroud)
有这样的课吗?
如果我可以做类似的事情,那就更好了
ts = end_date - start_date
Run Code Online (Sandbox Code Playgroud)
我知道减去两个日期会导致分隔所述日期的秒数,并且我可以从中完成所有日期.
我TimeSpan在我的数据库中保存一个(来自.NET)值,就像BIGINT在SQL Server中一样(保存Ticks属性).我想知道如何将此BIGINT值转换为DATETIMESQL Server中的值(而不是在.NET中).有任何想法吗?
干杯
编辑:
我正在使用NHibernate来映射TimeSpan我拥有的属性,并且它持久存在Ticks属性.我用它来控制某个日期的相对小时(或分钟).
在系统内部一切都很好,不需要这种转换.但是,在SQL Server中执行随机查询时,很难理解a的持久形式TimeSpan.因此,我传递Ticks值并DateTime返回a的函数将给出表示的小时,分钟和秒的数量TimeSpan.
请原谅粗略的代码,我试图以秒为单位显示视频的持续时间.我有一个下面但它没有正常工作.
我希望它能很好地显示 - 即应该显示9m:59s而不是09m:59s.
如果小时为零则不显示小时数,如果小时数为零则不显示分钟数.
public static string GetTimeSpan(int secs)
{
TimeSpan t = TimeSpan.FromSeconds(secs);
string answer;
if (secs < 60)
{
answer = string.Format("{0:D2}s", t.Seconds);
}
else if (secs < 600)//tenmins
{
answer = string.Format("{0:m}m:{1:D2}s", t.Minutes, t.Seconds);
}
else if (secs < 3600)//hour
{
answer = string.Format("{0:mm}m:{1:D2}s", t.Minutes, t.Seconds);
}
else
{
answer = string.Format("{0:h}h:{1:D2}m:{2:D2}s",
t.Hours,
t.Minutes,
t.Seconds);
}
return answer;
}
Run Code Online (Sandbox Code Playgroud) 有没有人知道用于将TimeSpan对象转换为"友好"字符串的好库(或代码片段),例如:
(这是一个文件到期系统,到期时间可能是几天到几十年)
只是为了澄清,说我有7天的TimeSpan,应打印"1周",14天"2周",366天"1年1天"等.
我正在写一个转换器,它取一个人的出生日期并生成他们的年龄.我写了一些看起来像这样的东西:
public class DateOfBirthToAgeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var date = value as DateTime?;
if (date == null) return null;
return (DateTime.Now - date).Years;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
我发现除了两个对象之外没有任何Years属性.我对此感到有些惊讶.我想到为什么可能没有.我认为这可能是因为闰日,但按照这个逻辑,不应该因为夏令时.TimeSpanDateTimeYearsDays
没有Months明确的意义,因为没有标准的月份长度.
我能够编写一些不同的代码来获得正确的年龄,但我仍然真的想知道为什么没有Years或Weeks属性TimeSpan.有谁知道原因?
TimeOnly是 .Net 6 和 .Net 一起引入的新类型之一DateOnly。我理解对该类型的巨大需求,DateOnly因为在很多情况下您希望存储没有相关时间的日期,但没有数据类型这样做。
但对于时间来说,它TimeSpan已经存在并且能够代表时间。与exceptTimespan非常相似,似乎遗漏了一些属性。TimeOnlyTimeOnly
除了节省一点内存之外,TimeOnly使用而不是有什么好处吗?TimeSpan
timespan ×10
c# ×8
datetime ×3
.net ×1
.net-6.0 ×1
formatting ×1
nhibernate ×1
ruby ×1
types ×1