已经使用Date.js,但如果需要也可以使用其他库.
不确定使用时间增量的最佳方法是什么.具体来说,我想显示从现在到过去的日期时间之间经过的时间.
所以我需要做这样的事情:
var elapsed_time = new Date() - pastDate;
pastDate.toString('days-hours-minutes-seconds');
Run Code Online (Sandbox Code Playgroud)
得到它主要使用Date.js工作,但问题是现在我正在使用Date对象而不是时间跨度,所以应该是23小时的时间跨度是在Date的第一次之后23小时:
var result = (new Date()) - past_date; "result" is the number (probably milliseconds): 15452732
var result = (new Date() - past_date "result" is a date from 1969: Wed Dec 31 1969 23:17:32
我需要的是:
0 days 23 hours 17 minutes and 32 seconds
有任何想法吗?
我有一个类似的方法:
public async Task SaveItemsAsync(IEnumerable<MyItem> items)
{
using (var ts = new TransactionScope())
{
foreach (var item in items)
{
await _repository.SaveItemAsync(item);
}
await _repository.DoSomethingElse();
ts.Complete();
}
}
Run Code Online (Sandbox Code Playgroud)
这当然有问题,因为TransactionScopeasync/await不能很好用.
它失败并显示InvalidOperationException消息:
"TransactionScope必须放在与它创建的同一个线程上."
我TransactionScopeAsyncFlowOption在这个答案中读到了,这似乎正是我所需要的.
但是,对于这个特定项目,我很难支持.Net 4.0,无法升级到4.5或4.5.1.因此,我的项目中的异步/等待行为由Microsoft.Bcl.Async NuGet包提供.
我似乎无法TransactionScopeAsyncFlowOption在这个或任何其他OOB包中找到.我只是在某个地方错过了吗?
如果没有,是否有其他方法可以达到相同的效果?也就是说 - 我希望事务范围正确完成或回滚,尽管跨越线程有延续.
我DoSomethingElse在上面的示例中添加了说明在事务范围内可能有多个调用,因此在一次调用中简单地将所有项目传递给数据库是不可行的选择.
在它的事项的情况下,库使用直接ADO.Net( ,SqlConnection,SqlCommand等)写入到SQL Server.
UPDATE
我以为我有一个解决方案,涉及从.Net 4.5.1中获取System.Transactions.dll并将其包含在我的项目中.但是,我发现这只适用于我的开发盒,因为它已经安装了4.5.1.部署到仅具有.Net 4.0的计算机时,它不起作用.它只是给了一个MissingMethodException.我正在寻找一种适用于.Net 4.0安装的解决方案.
我正在尝试将日历日期输入添加到我的一个表单中.Django在其管理页面上使用了一个精彩的日历小部件,但我无法弄清楚如何将其添加到自定义表单中.
我在这里找到了关于同一主题的其他几个问题,但它们似乎都已过时,复杂且无法正常工作.
有没有办法将Django内置的日历小部件包含在我的一个表单中?
我在EST时区有一段时间,它是在mysql服务器上使用NOW()函数完成的.因为我的服务器位于EST,所以存储的时间是EST.当我从iPhone上的应用程序中检索它时,我需要在用户的正确时区显示它.我怎么做?
根据这个讨论,以下两种方法应该没有区别:
public async Task Foo()
{
await DoSomethingAsync();
}
public Task Foo()
{
return DoSomethingAsync();
}
Run Code Online (Sandbox Code Playgroud)
实际上,似乎对于非常简单的方法,没有 async/await关键字的调用将是首选,因为它们会消除一些开销.
然而,这显然并不总是在单元测试中起作用.
MSTest的
[TestClass]
public class AsyncTest
{
[TestMethod]
public async Task Test1()
{
await Task.Delay(0);
}
[TestMethod]
public Task Test2()
{
return Task.Delay(0);
}
}
Run Code Online (Sandbox Code Playgroud)
NUnit的
[TestFixture]
public class AsyncTest
{
[Test]
public async Task Test1()
{
await Task.Delay(0);
}
[Test]
public Task Test2()
{
return Task.Delay(0);
}
}
Run Code Online (Sandbox Code Playgroud)
的xUnit
public class AsyncTest
{
[Fact]
public async Task Test1() …Run Code Online (Sandbox Code Playgroud) 根据Microsoft文档,该FILETIME结构从1601年1月1日开始计算(可能是当天的开始),但是这包括闰秒吗?
我的理解是这return Task.FromResult(foo)是一个简单的简写:
var tcs = new TaskCompletionSource<TFoo>();
tcs.SetResult(foo);
return tcs.Task;
Run Code Online (Sandbox Code Playgroud)
是否有一些等效的任务返回异常状态?
var tcs = new TaskCompletionSource<TFoo>();
tcs.SetException(new NotSupportedException()); // or whatever is appropriate
return tcs.Task;
Run Code Online (Sandbox Code Playgroud)
我没有看到任何类似的东西Task.FromException.或者在不返回任务的情况下抛出异常会更合适吗?
我正在玩Raven DB,我想知道是否可以使用Raven Management Studio连接到嵌入式数据库.有没有人这样做过?
我在应用程序中使用NodaTime,我需要用户从下拉列表中选择他们的时区.我有以下软要求:
1)该列表仅包含对于真实场所现在和将来合理有效的选择.应过滤掉历史,模糊和通用时区.
2)列表应首先按UTC偏移量排序,然后按时区名称排序.这有希望将它们置于对用户有意义的顺序中.
我写了下面的代码,它确实有效,但并不完全是我所追求的.可能需要调整滤波器,我宁愿让偏移代表基本(非dst)偏移,而不是当前偏移.
建议?建议?
var now = Instant.FromDateTimeUtc(DateTime.UtcNow);
var tzdb = DateTimeZoneProviders.Tzdb;
var list = from id in tzdb.Ids
where id.Contains("/") && !id.StartsWith("etc", StringComparison.OrdinalIgnoreCase)
let tz = tzdb[id]
let offset = tz.GetOffsetFromUtc(now)
orderby offset, id
select new
{
Id = id,
DisplayValue = string.Format("({0}) {1}", offset.ToString("+HH:mm", null), id)
};
// ultimately we build a dropdown list, but for demo purposes you can just dump the results
foreach (var item in list)
Console.WriteLine(item.DisplayValue);
Run Code Online (Sandbox Code Playgroud) 我有一个要求,我需要在日期字段上工作,所以要求是这样的事情
我将该字段称为最小可能日期
在日期中添加+1
如果最小可能日期恰好在添加1天后的周末(周六或周日),则显示下一个工作日,即周一
如果最小可能日期恰好落在假期,则显示下一个工作日.(假期1.1,1.5,3.10,25.12,26.12)
如果最小可能日期恰好在添加1天后的周末(周六或周日),以及之后的第二天是假期,则显示下一个工作日.例如:如果最小可能日是星期六,则在+1天之后,我们将必须在星期一显示.但如果星期一恰好是假日,那么我们必须在周二展示.
我已经通过多个if和else案例尝试了上述问题的解决方案,但只是想知道是否有任何通用和优雅的方式来做到这一点?
我试过了
var Holidays = new List<DateTime>();
Holidays.Add(new DateTime(DateTime.Now.Year,1,1));
Holidays.Add(new DateTime(DateTime.Now.Year,1,5));
Holidays.Add(new DateTime(DateTime.Now.Year,3,10));
Holidays.Add(new DateTime(DateTime.Now.Year,12,25));
if(date.DayOfWeek === DayOfWeek.Saturday || date.DayOfWeek === DayOfWeek.Sunday)
{
//Logic to add +1 and again some logic to check for weekends and weekdays
}
else if(holidays.Contain(date))
{
//Logic to add +1 and again some logic to check for weekends and weekdays
}
Run Code Online (Sandbox Code Playgroud) c# ×4
datetime ×4
async-await ×3
.net ×2
date ×2
timezone ×2
.net-4.0 ×1
algorithm ×1
datejs ×1
django ×1
django-forms ×1
filetime ×1
iphone ×1
javascript ×1
leap-second ×1
mstest ×1
mysql ×1
nodatime ×1
nunit ×1
ravendb ×1
timespan ×1
unit-testing ×1
windows ×1