标签: datetime-format

Java 8:DateTimeParseException

基本上,我试图将字符串解析为时间戳.

public static void main(String[] args) {
    System.out.println("Timestamp:" + DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS").parse("20180301050630663"));
}
Run Code Online (Sandbox Code Playgroud)

我有一个例外说

Exception in thread "main" java.time.format.DateTimeParseException: Text '20180301050630663' could not be parsed at index 0
    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1947)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849)
    at java.time.LocalDateTime.parse(LocalDateTime.java:492)
    at Lob.main(Lob.java:41)
Run Code Online (Sandbox Code Playgroud)

然后我尝试这样做:

DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
LocalDateTime timestamp = LocalDateTime.parse("20180301050630663", fmt);
System.out.println("Timestamp:" + timestamp);
Run Code Online (Sandbox Code Playgroud)

并得到了同样的异常错误.

我在这做错了什么?理想情况下,我想将时间戳存储到变量中,并将其与我正在读取的另一个时间戳进行比较.我怎样才能做到这一点?

java datetime datetime-format java-8

12
推荐指数
1
解决办法
816
查看次数

C#DateTime ToString("MM-dd-yyyy")返回有趣的日期值

我在ASP.Net页面的codebehind文件中有以下代码

txtStartDate.Text = DateTime.Today.ToString("MM-dd-yyyy");
Run Code Online (Sandbox Code Playgroud)

我希望返回"09-11-2009".但是,当我在开发服务器上运行页面时,我在文本框中看到"09-00-2009".我看不出任何理由,所以我显然遗漏了一些东西.有人有线索吗?

c# asp.net datetime-format

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

如何在Delphi中检查字符串是否是有效的DateTime格式字符串

我希望用户能够在程序中手动输入日期时间字段的格式.我有Tedit组件.例如,如果用户输入'HH:nn',那么这是一个有效的日期时间格式字符串,并且所有日期时间组件都应该将format属性更改为this,但如果他输入'asd',则不是.有没有快速的方法来检查这一点,而无需编写自己的功能?

delphi string datetime datetime-format

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

.NET:为什么TryParseExact在Hmm和Hmmss上失败?

我正在尝试这种DateTime.TryParseExact方法,而且我遇到了一个我不明白的案例.我有一些格式和一些主题要解析每个格式应完全匹配其中一种格式:

var formats = new[]
     {
         "%H",
         "HH",
         "Hmm",
         "HHmm",
         "Hmmss",
         "HHmmss",
     };

var subjects = new[]
     {
         "1",
         "12",
         "123",
         "1234",
         "12345",
         "123456",
     };
Run Code Online (Sandbox Code Playgroud)

然后我尝试解析它们并打印出结果:

foreach(var subject in subjects)
{
    DateTime result;
    DateTime.TryParseExact(subject, formats, 
        CultureInfo.InvariantCulture, 
        DateTimeStyles.NoCurrentDateDefault,
        out result);

    Console.WriteLine("{0,-6} : {1}", 
        subject,
        result.ToString("T", CultureInfo.InvariantCulture));
}
Run Code Online (Sandbox Code Playgroud)

我得到以下内容:

1      : 01:00:00
12     : 12:00:00
123    : 00:00:00
1234   : 12:34:00
12345  : 00:00:00
123456 : 12:34:56
Run Code Online (Sandbox Code Playgroud)

而我的问题是......为什么它在123和12345失败了?不应该成为01:23:00和01:23:45吗?我在这里错过了什么?我怎么能像我期望的那样让它工作?


更新:所以,似乎我们可能已经弄清楚为什么这是失败的.似乎H实际上抓住两个数字,然后只留下一个数字,mm然后失败.但是,有没有人对如何更改此代码有一个好主意,以便我得到我想要的结果?

另一个更新:想想我现在找到了一个合理的解决方案.添加它作为答案.将在2天内接受它,除非其他人想出更好的一个.谢谢您的帮助!

.net c# datetime parsing datetime-format

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

无法从FILETIME(窗口时间)转换为dateTime(我得到一个不同的日期)

使用以下方法进行转换时,我阅读的大多数文件都是合适的时间:

// works great most of the time
private static DateTime convertToDateTime(System.Runtime.InteropServices.ComTypes.FILETIME time)
{
    long highBits = time.dwHighDateTime;
    highBits = highBits << 32;
    return DateTime.FromFileTimeUtc(highBits + time.dwLowDateTime);
}
Run Code Online (Sandbox Code Playgroud)

这里我在visual studio中有一个例子来说明这个方法有时不起作用,例如我将在我的计算机和调试中显示实际文件.所以恰好在我的调试中的文件是:

"A:\ Users\Tono\Documents\Visual Studio 2010\Projects\WpfApplication4\WpfApplication4\obj\x86\Debug\App.g.cs" 在此输入图像描述

这里是我试图转换为DateTime的FILETIME"我需要LastWriteTime"

在此输入图像描述

在这里你可以看到dwHighDateTime = 30136437以及该文件中的dwLowDateTime = -2138979250.

当我运行我的方法加上其他技术时,我得到以下日期: 在此输入图像描述

所以到目前为止,一切似乎都很有效.但是为什么当我在Windows中浏览并查找特定文件时,我会得到一个不同的日期!这是我在查看文件属性时得到的日期: 在此输入图像描述

为什么日期不匹配?我究竟做错了什么?

c# datetime datetime-format filetime

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

为什么DateTime.ParseExact不用尾随Z解析UTC格式?

另一个ParseExact问题.我正在尝试将UTC格式的字符串解析为日期时间,格式为:

"YYYY-MM-DDThh:mm:ss.ssZ"

这是UTC格式,尾随Z.由于某种原因,我无法解析它.我尝试过"u","s","o"自定义格式字符串,以及几个DateTimeStyles以及手写.文化是不变的.

由于某种原因,它不喜欢Z,这表明它是一个UTC字符串.当我删除它,解析.我很乐意,满意地摆脱尾随的Z,因为我知道它们是UTC日期时间字符串,但我不能.有任何想法吗?

.net datetime datetime-format datetime-parsing

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

在.NET中发出字符串格式为"M"的DateTime.ToString

我有DateTime的字符串格式的问题.我认为这是MS中的错误.你能解释一下,有什么不对吗?

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(DateTime.Now.ToString("M"));//return 07 July   <---- WRONG, SEE MSDN
        Console.WriteLine(DateTime.Now.ToString(".M"));//return .7   <---- GOOD
        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

MSDN

.net c# string datetime datetime-format

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

Java 8可选时间部分无法正常工作

我正在尝试为当前实现此选项的可选时间部分创建日期时间格式

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.text.ParseException;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        System.out.println(Ideone.getDate("2017-07-01T00:00:00.0Z"));
        System.out.println(Ideone.getDate("2017-07-01T00:00:00.00Z"));
        System.out.println(Ideone.getDate("2017-07-01T00:00:00.000Z"));
    }

    public static LocalDateTime getDate(String date) {
        try {

            DateTimeFormatter formatter2 =
                DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss[.SSS]'Z'");
            LocalDateTime ldt = LocalDateTime.parse(date, formatter2);


            return ldt;

        } catch (DateTimeParseException ex) {
            return null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

并有输出

空值

2017-07-01T00:00

2017-07-01T00:00

现在我的问题是,为什么有1个时间分数的日期不起作用,它正在处理2个和3个分数?它应该招待1,2和3分吗?或只有3个分数?

提前致谢

java datetime-format java-8 java-time

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

使用当前文化定义的12或24小时格式从DateTime获取一天中的小时

.Net具有内置的DateTime ToShortTimeString()函数,该函数使用CultureInfo.CurrentCulture.DateTimeFormat.ShortTimePattern格式.它会为en-US返回类似的内容:"下午5:00".对于像de-DE这样的24小​​时文化,它将返回"17:00".

我想要的是一种方法,只需返回适用于每种文化的小时(上述案例中的"下午5点"和"17").什么是最好/最干净的方法?

谢谢!

.net c# culture datetime-format

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

将Double转换为DateTime?

我有一个.CSV文件,我正在读一个C#程序.在其中一列中,有一个日期,但它采用"通用"格式,因此它在.CSV中显示为数字.例如:41172.

如何在C#中将此数字转换为格式为dd/mm/yyyy的日期?41172相当于20/09/2012.

c# excel datetime datetime-format

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