标签: timespan

C#最好的方式来比较一天中的两个时间

我想知道当天的指定时间是否过去了.我真的不喜欢我的方式:

private static readonly TimeSpan _whenTimeIsOver = new TimeSpan(16,25,00);

internal static bool IsTimeOver()
{
    return DateTime.Now.TimeOfDay.Subtract(_whenTimeIsOver ).Ticks > 0; 
}
Run Code Online (Sandbox Code Playgroud)

你好吗?

c# datetime timespan

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

TimeOnly 相对于 TimeSpan 有什么好处?

TimeOnly是 .Net 6 和 .Net 一起引入的新类型之一DateOnly。我理解对该类型的巨大需求,DateOnly因为在很多情况下您希望存储没有相关时间的日期,但没有数据类型这样做。

但对于时间来说,它TimeSpan已经存在并且能够代表时间。与exceptTimespan非常相似,似乎遗漏了一些属性。TimeOnlyTimeOnly

除了节省一点内存之外,TimeOnly使用而不是有什么好处吗?TimeSpan

c# types timespan .net-6.0

11
推荐指数
1
解决办法
2819
查看次数

每周时间表 - 如何将其存储在数据库中?

目前,我正在开发一个项目来管理服务器等数据库上的维护窗口.基本上,我只需要精确到一小时,但允许将它们设置为允许或禁止每天一周中的.

我对如何做到这一点有一些想法,但由于我自己工作,我不想在没有一些反馈的情况下做任何事情.

为了形象化,它就像流动的"图形"

    | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
    -------------------------------------------
5AM |allow|allow|allow|deny |deny |allow|allow|
    -------------------------------------------
6AM |allow|deny |deny |deny |deny |deny |allow|
    -------------------------------------------
7AM |allow|deny |deny |deny |deny |deny |allow|
    -------------------------------------------
8AM |allow|deny |deny |deny |deny |deny |allow|
    -------------------------------------------
9AM |allow|deny |deny |deny |deny |deny |allow|
    -------------------------------------------
... etc... 
Run Code Online (Sandbox Code Playgroud)

有没有一种标准的方式来做这个或资源,可能会给我一些想法......

  1. 制作可以轻松保存和恢复的格式
  2. 使其可以在数据库中搜索(例如,不必反序列化它来搜索时间)

[更新]

值得一提的是,即使不太可能,也可以设置为"允许,拒绝,允许,拒绝......等等".跨度不能保证是一整天中唯一的一个.

这也不是唯一的时间表,会有数百台设备各自有自己的时间表,所以它会变得毛茸茸......哈哈?

Rob问每周是否需要跟踪 - 事实并非如此.这是适用于整年的通用计划(定期维护)

database datetime timespan data-structures

10
推荐指数
2
解决办法
8282
查看次数

人类可读的日期格式

您可能已经注意到某些Web应用程序(例如,GMail的某些部分)以比DD/MM/YYYY更人性化的格式显示日期.

例如,如果我打开23日的邮件(在撰写本文时恰好是3天前,我会得到以下内容:

12月23日(3天前)

我想在我自己的Web应用程序中实现类似的逻辑.

例如,在处理.NET TimeSpan对象时,我想将其转换为如下文本:

2个月

3天

是否有一个.NET库能够做到这一点?

如果不是,我可能会建立一些基本的和开源的东西.


我在这里做了一个基本的开始:

public static class TimeSpanHelpers
{
    public static string ToHumanReadableString(
        this TimeSpan timeSpan)
    {
        if (timeSpan.TotalDays > 30)
            return (timeSpan.TotalDays / 30) + " month(s)";

        if (timeSpan.TotalDays > 7)
            return (timeSpan.TotalDays / 7) + " week(s)";

        return (timeSpan.TotalDays) + " day(s)";
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# timespan user-experience date

10
推荐指数
2
解决办法
7577
查看次数

在C#TimeSpan Class内循环一周的日子

我试图在两个时间段之间循环通过WEEK的每一天

  DateTime start = new DateTime(2010, 1, 1);
  DateTime end = new DateTime(2011, 12, 12);
Run Code Online (Sandbox Code Playgroud)

我已设法使用以下代码获取这些日期之间的天数

     TimeSpan range = (end - start);
Run Code Online (Sandbox Code Playgroud)

结果是710.

我现在希望每个月能够获得本周的活动,

例如

1月1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 171 18 19 20...

与匹配

MTWTFSSMTWTFSSM

我知道c#有一个来自DateTime类DayOfWeek的属性,它获取了一周中的一天我的问题是构建一个循环来执行上述操作?

任何人?

c# datetime loops timespan dayofweek

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

TimeSpan ToString"[d.] hh:mm"

我试图将TimeSpan格式化为字符串.然后我从MSDN到期以生成我的自定义字符串格式.但它没有言语.它返回"FormatException".

为什么?我不明白......

var ts = new TimeSpan(0, 3, 25, 0);
var myString = ts.ToString("[d'.']hh':'mm");
Run Code Online (Sandbox Code Playgroud)

c# timespan tostring custom-formatting

10
推荐指数
1
解决办法
9256
查看次数

如何在c#中将double值转换为DateTime?

我有值40880.051388并将其存储为双,如果我打开Excel并粘贴到单元格并将以下自定义格式" m/d/yyyy h:mm"应用于该单元格,我得到"12/3/2011 1:14"

如何在C#中进行解析/转换?我不知道某个检查点的值是毫秒,如纪元时间,还是该值是以某种特定的准备格式,但是excel如何得出这个特定值?可以在C#中完成吗?

我尝试过在Visual Studio中使用TimeSpan,DateTime和其他类似的东西,但我没有到达任何地方.

c# excel datetime timespan converter

10
推荐指数
1
解决办法
4万
查看次数

获取连续的日期范围

给定一个日期范围列表,我想得到一个连续日期范围列表.

在此输入图像描述

我不太确定我正在寻找的术语,但我已经把一个骨架放在一起:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;

namespace ContiguousTimeSpans
{
    class Program
    {
        static void Main(string[] args)
        {
            List<DateRange> ranges = new List<DateRange>();
            ranges.Add(new DateRange(DateTime.Parse("01/12/2015 07:00:00"), DateTime.Parse("01/12/2015 10:00:00")));
            ranges.Add(new DateRange(DateTime.Parse("01/12/2015 06:00:00"), DateTime.Parse("01/12/2015 09:00:00")));
            ranges.Add(new DateRange(DateTime.Parse("01/12/2015 05:00:00"), DateTime.Parse("01/12/2015 08:00:00")));
            ranges.Add(new DateRange(DateTime.Parse("01/12/2015 18:00:00"), DateTime.Parse("01/12/2015 21:00:00")));
            ranges.Add(new DateRange(DateTime.Parse("01/12/2015 12:00:00"), DateTime.Parse("01/12/2015 14:00:00")));
            ranges.Add(new DateRange(DateTime.Parse("01/12/2015 20:00:00"), DateTime.Parse("01/12/2015 22:00:00")));
            ranges.Add(new DateRange(DateTime.Parse("01/12/2015 11:00:00"), DateTime.Parse("01/12/2015 23:00:00")));

            List<DateRange> contiguousBlocks = GetContiguousTimespans(ranges);
            Debug.Assert(contiguousBlocks.Count == 2);

            Debug.Assert(contiguousBlocks[0].Start.Hour == 5);
            Debug.Assert(contiguousBlocks[0].End.Hour == 10);

            Debug.Assert(contiguousBlocks[1].Start.Hour == 11);
            Debug.Assert(contiguousBlocks[1].End.Hour …
Run Code Online (Sandbox Code Playgroud)

c# datetime timespan

10
推荐指数
1
解决办法
980
查看次数

如何在TypeScript中使用TimeSpan

我正在使用Angular + Typescript构建一个Web应用程序.我有ASP.NET Web API.其中一个端点返回带有timespan属性的模型.我使用字符串类型来显示它但现在我需要使用TimeSpan值在画布上绘制对象,我找不到任何有用的信息.

字符串值类似于:"00:01:05"

我需要知道TotalSeconds例如.

timespan typescript

10
推荐指数
2
解决办法
5813
查看次数

将秒转换为天,hh:mm:ss C#

我需要以格式转换秒数3d, 02:05:45.使用以下功能,我可以将其转换为3.02:05:45.我不知道如何将其转换为我想要的格式.请帮忙.

private string ConvertSecondsToDate(string seconds)
{
    TimeSpan t = TimeSpan.FromSeconds(Convert.ToDouble(seconds));

    if (t.Days > 0)
        return t.ToString(@"d\.hh\:mm\:ss");
    return t.ToString(@"hh\:mm\:ss");

}
Run Code Online (Sandbox Code Playgroud)

如果我尝试做这样的事情,t.ToString(@"%d , hh\:mm\:ss")我会收到错误,

输入字符串的格式不正确.

c# timespan

9
推荐指数
1
解决办法
6258
查看次数