我在sql server 2005表中有一个nvarchar(max)列,用于存储.NET TimeSpan对象的字符串表示.有时会手动编辑表格.我想添加一个检查约束来验证TimeSpan.Parse()可以解析该字符串.我该怎么做?我想我可以使用其中一种方法在sql server中启用正则表达式,但我想找到一种更简单的方法,如果有的话!
我正在尝试使用Timespan类来创建开始时间和停止时间,获得差异并最终将结果与另一个数字相乘和相乘.
问题是进入我可以使用的东西.
有什么建议?
在今天进行编码时,我注意到时间跨度和格式化字符串有些奇怪.我试图打印时间跨度,例如01:03:37作为1:03:37(不数小时的前导0).所以我使用了格式字符串h:mm:ss.然而,这给了我一个前导0.如果我将TimeSpan转换为DateTime并再次做同样的事情,h格式化字符串按预期工作.
一个示例控制台程序:
class Program
{
static void Main(string[] args)
{
var time = new TimeSpan(01, 03, 37);
var culture = new CultureInfo("sv-SE");
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
Console.WriteLine(time.ToString());
Console.WriteLine(string.Format(culture, "{0:h:mm:ss}", time));
Console.WriteLine(string.Format(culture, "{0:hh:mm:ss}", time));
Console.WriteLine((new DateTime(time.Ticks)).ToString("h:mm:ss", culture));
Console.WriteLine((new DateTime(time.Ticks)).ToString("hh:mm:ss", culture));
Console.ReadKey();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
01:03:37
01:03:37 // <-- expected: 1:03:37
01:03:37
1:03:37
01:03:37
Run Code Online (Sandbox Code Playgroud)
为什么TimeSpan和DateTime的表现不同?
我不能为我的生活让这个工作.我需要从文本块中的一对时空对象中显示hh:mm,它只是不起作用.这是我到目前为止:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}From {0:hh\\:mm} to {1:hh\\:mm}">
<Binding Path="StartTime"/>
<Binding Path="EndTime"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
文本块显示为空白.我也尝试了以下相同的结果:
<TextBlock>
<TextBlock.Text>
<MultiBinding StringFormat="{}From {0} to {1}">
<Binding Path="StartTime" StringFormat="hh\\:mm"/>
<Binding Path="EndTime" StringFormat="hh\\:mm"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
如果我的字符串格式为hust"hh"那么我只得到了几个小时,所以我想我可以用4个部分来构建它,但这感觉不对.任何帮助表示赞赏.
我需要一种方法来创建TimeSpan时间选择器列,允许超过24小时.现在,我得到了一个从DateTimePicker派生的TimePicker,但在24之后,它又回到了零.我没有找到改变它的行为的方法.
请帮忙.
谢谢!
我正在用C#开发一个兴趣计算器.我需要知道2之间的天数dates
所以,我正在计算这样的事情:
DateTime dt1 = DateTime.ParseExact(DateTime.Now.Date.ToString("dd-MM-yy"), "dd-MM-yy", CultureInfo.InvariantCulture).Date;
DateTime dt2 = DateTime.ParseExact(Duration, "dd-MM-yy", CultureInfo.InvariantCulture).Date;
Double no_days = (dt1 - dt2).TotalDays;
Run Code Online (Sandbox Code Playgroud)
但是,根据月份,天数会有所不同.因此,即使天数少于30天,2月15日至3月15日构成一个月.
任何想法我如何确定过去的月数?利息计算在月末持续时间内完成.
谢谢
根据当前时间,我需要计算商店是否实际开放.截至目前,开放时间持续为TimeSpan:
public TimeSpan OpeningTime { get; set; }
public TimeSpan ClosingTime { get; set; }
Run Code Online (Sandbox Code Playgroud)
如何计算商店现在是否已经开放?我试过一些想法,但解决方案看起来很麻烦.一个原因是需要在TimeSpan和之间进行转换DateTime.TimeSpan开放时间的格式是否正确?当时一个单独的课程会更有意义吗?
注意:工作日分开处理
我需要格式TimeSpan到分钟和秒(没有小时),我期待MSDN格式,但没有找到任何我可以重用的例子.
我需要的例子:
TimeSpan.FromSeconds(1) --> 00:01
TimeSpan.FromSeconds(60) --> 01:00
TimeSpan.FromSeconds(3600) --> 60:00
TimeSpan.FromSeconds(36000) --> 600:00
Run Code Online (Sandbox Code Playgroud)
任何格式化可能用于将TimeSpan转换为字符串的想法在几分钟内:秒格式?
从TimeSpan.Parse方法的文档中我们看到days元素的范围是0到10675199.我只是想知道微软是否有任何逻辑选择这个数字?
我刚收到我之前从未见过的应用程序错误.任何人都知道这意味着什么?我知道时间跨度持续时间过长,但实际数字是多长呢?
timespan ×10
c# ×8
datetime ×3
parsing ×2
datagridview ×1
date ×1
formatting ×1
multibinding ×1
regex ×1
sql ×1
sql-server ×1
winforms ×1
wpf ×1
xaml ×1