相关疑难解决方法(0)

如何在DateTime中更改时间?

如何只更改DateTime变量"s"中的时间?

DateTime s = some datetime;
Run Code Online (Sandbox Code Playgroud)

c# time datetime

330
推荐指数
12
解决办法
36万
查看次数

如何截断.NET DateTime的毫秒数

我正在尝试将传入请求的时间戳与数据库存储值进行比较.SQL Server当然会保留一些毫秒的精度,当读入.NET DateTime时,它包括那些毫秒.但是,对系统的传入请求不提供该精度,因此我需要简单地删除毫秒.

我觉得我错过了一些明显的东西,但我还没有找到一种优雅的方法(C#).

.net c# datetime

319
推荐指数
10
解决办法
14万
查看次数

舍入DateTime对象

我想将日期/时间舍入到图表应用程序的最近区间.我想要一个像下面这样的扩展方法签名,以便可以在任何精度级别上实现舍入:

static DateTime Round(this DateTime date, TimeSpan span);
Run Code Online (Sandbox Code Playgroud)

我的想法是,如果我通过十分钟的时间跨度,它将四舍五入到最接近的十分钟间隔.我不能理解我的实施,并希望你们中的一个人之前会写过或使用类似的东西.

我认为楼层,天花板或最近的实施都可以.

有任何想法吗?

编辑:感谢@tvanfosson和@ShuggyCoUk,实现如下:

public static class DateExtensions {
    public static DateTime Round(this DateTime date, TimeSpan span) {
        long ticks = (date.Ticks + (span.Ticks / 2) + 1)/ span.Ticks;
        return new DateTime(ticks * span.Ticks);
    }
    public static DateTime Floor(this DateTime date, TimeSpan span) {
        long ticks = (date.Ticks / span.Ticks);
        return new DateTime(ticks * span.Ticks);
    }
    public static DateTime Ceil(this DateTime date, TimeSpan span) {
        long ticks = (date.Ticks + span.Ticks - …
Run Code Online (Sandbox Code Playgroud)

c# algorithm

100
推荐指数
3
解决办法
3万
查看次数

有没有更好的方法在C#中将DateTime四舍五入到最接近的5秒?

我想将DateTime四舍五入到最接近的5秒.这是我目前正在做的方式,但我想知道是否有更好或更简洁的方式?

DateTime now = DateTime.Now;
int second = 0;

// round to nearest 5 second mark
if (now.Second % 5 > 2.5)
{
    // round up
    second = now.Second + (5 - (now.Second % 5));
}
else
{
    // round down
    second = now.Second - (now.Second % 5);
}

DateTime rounded = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, second);
Run Code Online (Sandbox Code Playgroud)

请注意,我发现 2个前面的问题,但他们截断而不是的时间.

c# algorithm performance datetime

18
推荐指数
2
解决办法
2万
查看次数

如何根据分钟来计算小时数(小时+ 0,如果小于30,小时+ 1否则)?

我需要根据DateTime变量中的分钟来舍入小时数.条件是:如果分钟小于30,则必须将分钟设置为零并且不更改为小时,否则如果分钟> = 30,则小时必须设置为小时+ 1并且分钟再次设置为零.秒被忽略.

例如:
11/08/2008 04:30:49应该成为11/08/2008 05:00:00
并且11/08/2008 04:29:49应该成为11/08/2008 04:00:00

我编写的代码完全正常,但只是想知道一个更好的方法,如果可以写,也会欣赏替代方法.

string date1 = "11/08/2008 04:30:49";
DateTime startTime;
DateTime.TryParseExact(date1, "MM/dd/yyyy HH:mm:ss", null,     
    System.Globalization.DateTimeStyles.None, out startTime);

if (Convert.ToInt32((startTime.Minute.ToString())) > 29)
{
    startTime = DateTime.Parse(string.Format("{0}/{1}/{2} {3}:{4}:{5}",
        startTime.Month.ToString(), startTime.Day.ToString(), 
        startTime.Year.ToString(), startTime.Hour.ToString(), "00", "00"));
    startTime = startTime.Add(TimeSpan.Parse("01:00:00"));
    Console.WriteLine("startTime is :: {0}", 
        startTime.ToString("MM/dd/yyyy HH:mm:ss"));
}
else
{
    startTime = DateTime.Parse(string.Format("{0}/{1}/{2} {3}:{4}:{5}", 
        startTime.Month.ToString(), 
        startTime.Day.ToString(), startTime.Year.ToString(), 
        startTime.Hour.ToString(), "00", "00"));

        Console.WriteLine("startTime is :: {0}", 
        startTime.ToString("MM/dd/yyyy HH:mm:ss"));
}
Run Code Online (Sandbox Code Playgroud)

.net c# datetime rounding

14
推荐指数
4
解决办法
2万
查看次数

标签 统计

c# ×5

datetime ×4

.net ×2

algorithm ×2

performance ×1

rounding ×1

time ×1