标签: timespan

为什么这个特定的TimeSpan格式字符串在.NET 4中停止工作?

考虑一下这个代码(预装了一个例子):

DateTime dt1 = DateTime.Parse("7/30/2010 9:33:29.1234567 AM");
DateTime dt2 = DateTime.Parse("6/30/2010 9:33:00.7654321 AM");

TimeSpan ts = dt1 - dt2;

Console.WriteLine(string.Format( "{0:d.hh:mm:ss.ff}", ts ));
Run Code Online (Sandbox Code Playgroud)

这是我至少从.NET 1.1开始工作的一段代码的代表.

它在1.1到3.5中运行良好,具有以下输出(对于这些dummied up输入):

30.00:00:28.3580246
Run Code Online (Sandbox Code Playgroud)

但现在我发现它在.NET 4中死了,并显示错误消息:

Input string was not in a correct format.

因此,就好像.NET 4突然决定它不喜欢这种格式的时差.将线路更改为,比方说

Console.WriteLine(string.Format( "{0}", ts.ToString("d.hh:mm:ss.ff") ));
Run Code Online (Sandbox Code Playgroud)

具有相同的效果.

现在我注意到的事情是,如果我只是默认,.ToString()我得到相同的输出.我认为思考过程是这是针对未来版本中默认格式变化的保险政策.但现在它看起来并不像是一种选择.

有谁知道为什么这会改变,如果我做错了什么或者是否有最佳实践方法来做我想要完成的事情?

.net c# formatting timespan .net-4.0

5
推荐指数
1
解决办法
2788
查看次数

Java漂亮的打印持续时间

是否有Java类或一些示例代码可以将java Date或Timestamp转换为:

"3 hours"
" 20 seconds"
 "25 minutes"
Run Code Online (Sandbox Code Playgroud)

我需要在我的Web应用程序中使用这些字符串来显示生成文件所花费的时间(当然是以漂亮的打印方式:))

谢谢,

java timespan pretty-print

5
推荐指数
1
解决办法
2799
查看次数

以秒和分钟转换计时器间隔

我可以在文本框中获取timer1间隔但是以毫秒为单位的转换时间是以秒为单位还是以分钟为单位?

.net c# timespan

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

使用JSON.net和.net WebApi反序列化TimeSpan

我有一个使用Entity Framework 4.1的ASP.NET WebApi项目.我试图返回一个实体并利用JSON.net进行反序列化.一切都运行良好但是当尝试使用TimeSpan属性反序列化实体时,我运行以下异常:

无法从System.String转换或转换为System.TimeSpan.

查看堆栈跟踪显示:

JsonSerializationException:将值"PT17H9M43.1671969S"转换为类型"System.TimeSpan"时出错.路径'TimeIn',第1行,位置890.

输出来自response.Content.ReadAsStringAsync().Result:

{ "CreatedDate": "/日期(1329851383157-0500)/", "ServicerUserId":6, "TimeIn": "PT17H9M43.1671969S", "超时": "PT17H28M43.1671969S"}

在使用JSON.net之前,我已经成功地反序列化了,System.Runtime.Serialization.JsonDataContractJsonSerializer但是我宁愿不使用这种方法.

用于从WebApi获取实体的代码

public T Get<T>(object id)
{
    using (var httpClient = NewHttpClient())
    {
        var response = httpClient.GetAsync(_endpoint + id.ToString()).Result;
        return JsonConvert.DeserializeObject<T>(response.Content.ReadAsStringAsync().Result);
    }
}
Run Code Online (Sandbox Code Playgroud)

WebApi控制器中用于返回实体的代码:

// GET /api/services/5
public Service Get(Guid id)
{
    var entry = db.Services.Find(id);
    if (entry == null)
        throw new HttpResponseException(HttpStatusCode.NotFound);
    return entry;
}
Run Code Online (Sandbox Code Playgroud)

任何关于如何反序列化TimeSpan的想法都将不胜感激.

c# json timespan json.net asp.net-web-api

5
推荐指数
1
解决办法
6728
查看次数

创建倒计时到目前为止C#

我想创建一个Windows窗体应用程序,它只显示一个计时器:

xx天xx小时xx分钟xx秒

  • 没有设置计时器或任何东西的选项,我想在代码中这样做但是,问题是我希望它从当前时间(DateTime.Now)倒计时到特定日期.所以我最终得到的时间是TimeSpan类型.我现在怀疑如何实际显示这个,所以它实际上工作,并更新(倒计时)似乎找不到帮助我的教程,所以我希望我可以在这里得到一些帮助:)

c# datetime timespan timer

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

如何使用json和javascript/jquery正确处理db时间值

有谁知道如何解析json timespan对象?我想将UTC时间跨度返回到我的视图,然后将其转换为本地客户端时间,但我没有找到任何有关如何执行此操作的参考.

我正在使用mvc所以我有这个型号:

public class TimeSpanModel
{
    public TimeSpan StartTime { get; set; }

    public TimeSpanModel()
    {
        this.StartTime = DateTime.UtcNow.TimeOfDay;

    }
}
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,我将此模型返回到我的视图中,如下所示:

public ActionResult GetTimeSpanInfo()
    {
        TimeSpanModel tsm= new TimeSpanModel ();
        return Json(tsm);
    }
Run Code Online (Sandbox Code Playgroud)

我从视图中这样打电话:

$.ajax({
        type: 'POST',
        url: '@Url.Content("~/Controller/GetTimeSpanInfo")',
        success: function (data) {
        alert(data.StartTime);
        var dt = new Date(data.StartTime);
        alert(dt.toString());
        }
    });
Run Code Online (Sandbox Code Playgroud)

但在第一个警告框中,我只看到这个:[object Object]所以我试图将时间跨度转换为Date,但是在第二个警告框中,我得到了无效日期.

我是否必须将时间跨度转换为字符串,然后将该字符串与我不需要的奇怪日期连接起来以创建"有效"日期然后将其转换为本地时间,然后从中提取时间?

或者是使用TimeSpans更简单,更优雅的方式,还是只是日期时间值的时间部分?

谢谢你的帮助.

PS获取UTCnow时间仅将其转换为本地时间似乎很愚蠢,但我最终将从db表中获取此UTC时间值 - 键入时间(0).我上面发布的方法只是一种较短的方法来测试如何从db中获取该值然后在模型中设置值.

json timespan

5
推荐指数
1
解决办法
1805
查看次数

如何检查List <>包含TimeSpan上的比较

我有一个TimeSpans列表,我需要检查它们中的任何一个是否超过5小时.我知道我可以循环遍历列表,但如果可能的话我宁愿使用List <>的内置函数之一来检查条件.

if (driverSchedules.GetAllShifts().Contains(delegate(TimeSpan ts) { return ts > new TimeSpan(5,0,0);}))
{
    return true;
}
Run Code Online (Sandbox Code Playgroud)

*GetAllShifts返回一个List.

我得到的错误说:

"Cannot convert anonymous method to type 'System.TimeSpan' because it is not a 
delegate type"
Run Code Online (Sandbox Code Playgroud)

据我所知,"委托类型"是 System.TimeSpan

asp.net timespan list

5
推荐指数
1
解决办法
219
查看次数

TimeSpan.ToString()返回字符串,如(d:hh:mm:ss)

TimeSpan Ts = new TimeSpan(5, 4, 3, 2);
return Ts.ToString("?");
Run Code Online (Sandbox Code Playgroud)

我应该用问号代替什么表达式来获得这种格式: 5d:4h:3m:2s

c# timespan

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

从"jira notation"中的时间字符串中提取分钟

我试图从"jira time notation"输入的用户输入中提取分钟数.

例如,我想实现以下结果

  • 输入:"30m"/输出:30
  • 输入:"1h 20m"/输出:80
  • 输入:"3h"/输出180

从研究中,我发现TimeSpan.ParseExact,但我无法弄清楚如何使用它来实现我的需要.

非常感谢所有的帮助.

我的代码到目前为止:

public static int TextToMins(string TimeText)
    {
        CultureInfo culture = new CultureInfo("en-IE");
        string[] formats = { "What goes here?" };
        TimeSpan ts = TimeSpan.ParseExact(TimeText.Trim().ToLower(), formats, culture);
        return Convert.ToInt32(ts.TotalMinutes);
    }
Run Code Online (Sandbox Code Playgroud)

c# timespan jira

5
推荐指数
1
解决办法
917
查看次数

如何将时间跨度转换为十进制?

我的1.08:43:23文本框中有一个值,等于1d,08:43:23.我想将值转换为十进制为我将其乘以另一个十进制值,但是当我使用Convert.ToDecimal它时返回错误

输入字符串不是有效格式

Convert.ToDecimal不适合这种转换?有没有办法从这样的输入创建一个十进制值?

.net c# timespan decimal

5
推荐指数
1
解决办法
6295
查看次数