标签: simpledateformat

为什么这个SimpleDateFormat不能解析这个日期字符串?

SimpleDateFormat:

SimpleDateFormat pdf = new SimpleDateFormat("MM dd yyyy hh:mm:ss:SSSaa");
Run Code Online (Sandbox Code Playgroud)

抛出的异常pdf.parse("Mar 30 2010 5:27:40:140PM");:

java.text.ParseException: Unparseable date: "Mar 30 2010 5:27:40:140PM"
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?


编辑:感谢快速解答.你们都是对的,我只是错过了SimpleDateFormat文档中的一个关键句子 - 我应该把它称为一天.

java parsing date simpledateformat

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

SimpleDateFormat使月份名称错误

我对这一小段代码有疑问

SimpleDateFormat sf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");

String str = "2010-03-13 01:01:22";

Date date = sf.parse(str);

SimpleDateFormat f = new SimpleDateFormat("d MMM yyyy hh:mm aaa");

System.out.println(" Date " + f.format(date));   
Run Code Online (Sandbox Code Playgroud)

输出:

 Date 13 Jan 2010 01:01 AM
Run Code Online (Sandbox Code Playgroud)

代码似乎很好,但我仍然得到月份名称错误.请帮忙 !!谢谢.

java simpledateformat

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

如何使用DateFormat解析日期字符串?

我有一个日期字符串,格式如下:

Thu Oct 20 14:39:19 PST 2011

我想使用DateFormat解析它以获取Date对象.我正在尝试这样:

DateFormat df = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT);
Date date = df.parse(dateString);
Run Code Online (Sandbox Code Playgroud)

这给出了ParseException("不可解析的日期").

我也试过这个:

SimpleDateFormat df = new SimpleDateFormat("EEE-MMM-dd HH:mm:ss z yyyy");
Run Code Online (Sandbox Code Playgroud)

结果相同.

这是正确的SimpleDateFormat字符串吗?有没有更好的方法来解析这个日期?

android date-format simpledateformat

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

如何在Java中将日期格式化为字符串,如"31th Dec,2000"

我试着用这个SimpleDateFormat类来做这个,但是我没有找到任何在一天之后放置'st'的选项.我只能得到 '2000年12月31日'

如何格式像"2000年12月31日".我的日期是毫秒.

在java中是否有任何API可以让我们以这种方式格式化日期?

java format date simpledateformat

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

Java Date解析"am"和"pm"

使用SimpleDateFormat,如何解析字符串:"2013-05-23T09:18:07 pm.380 + 0000"

我的所有SimpleDateFormat字符串都在"pm"部分绊倒.

提前致谢.

编辑:我们无法控制进入的格式.

我试过了:

"yyyy-MM-dd'T'HH:mm:ss a.a..SSSZ"

"yyyy-MM-dd'T'HH:mm:ss aaaa.SSSZ"

"yyyy-MM-dd'T'HH:mm:ss a.'m'..SSSZ"

"yyyy-MM-dd'T'HH:mm:ss a.'m.'.SSSZ"

"yyyy-MM-dd'T'HH:mm:ss a.'m..'SSSZ"

"yyyy-MM-dd'T'HH:mm:ss aa'm'..SSSZ"

"yyyy-MM-dd'T'HH:mm:ss aa'm.'.SSSZ"

"yyyy-MM-dd'T'HH:mm:ss aaa'..'SSSZ"

"yyyy-MM-dd'T'HH:mm:ss aaa.'.'SSSZ"

"yyyy-MM-dd'T'HH:mm:ss aaa'.'.SSSZ"
Run Code Online (Sandbox Code Playgroud)

java simpledateformat

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

消除了DateTimeFormat和Joda的DateTimeFormatter之间微妙的空白处理差异

我们有一些像这样的现有代码:

DateFormat[] dateFormats = {
    new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH),
    new SimpleDateFormat("d MMM yyyy HH:mm:ss Z", Locale.ENGLISH)
};
Run Code Online (Sandbox Code Playgroud)

出于线程安全的原因,我尝试将其转换为使用Joda Time的格式化程序,因此:

DateTimeFormatter[] dateFormats = {
    DateTimeFormat.forPattern("EEE, d MMM yyyy HH:mm:ss Z")
                  .withLocale(Locale.ENGLISH)
                  .withOffsetParsed(),
    DateTimeFormat.forPattern("d MMM yyyy HH:mm:ss Z")
                  .withLocale(Locale.ENGLISH)
                  .withOffsetParsed()
};
Run Code Online (Sandbox Code Playgroud)

但是,我发现现有的测试案例已经破裂,这令我感到惊讶.特别是(至少导致测试失败的第一行):

String dateString = "Wed,  1 Feb 2006 21:58:41 +0000";
Run Code Online (Sandbox Code Playgroud)

DateFormat愉快地匹配逗号后面的两个或多个空格,但DateTimeFormatter只按字面意思匹配单个空格.

我可能会添加一个额外的格式,允许额外的空间,但是这样做有点可怕,那么是否有一些方法可以自定义DateTimeFormatter以使空格更加轻松?

java jodatime datetime-format simpledateformat

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

hh:mm a和HH之间的差异:mm a

这是我原来的代码 -

String dateString = "23 Dec 2015 1:4 PM";
Locale locale = new Locale("en_US");
SimpleDateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm a");
DateFormat df = new SimpleDateFormat("dd MMM yyyy HH:mm a", locale);
Date date = null;

try {
    date = formatter.parse(dateString);
} catch (ParseException e) {
    LOGGER.error(e);
}

String newDate = df.format(date);
System.out.println("oldDate = " + dateString);
System.out.println("newDate = " + newDate);
Run Code Online (Sandbox Code Playgroud)

这是我的输出 -

oldDate = 23 Dec 2015 1:4 PM
newDate = 23 Dec 2015 01:04 AM …
Run Code Online (Sandbox Code Playgroud)

java date jdk1.6 simpledateformat

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

具有模式yyyyMMddhhmmss的SimpleDateFormat无法解析日期"20160327020727"

我在20160327020727使用格式解析日期时遇到异常yyyyMMddhhmmss.请注意,lenient设置为false.

    SimpleDateFormat df = new SimpleDateFormat("yyyyMMddhhmmss");
    df.setLenient(false);
    try {
        Date dt = df.parse("20160327020727");
    } catch (ParseException e) {
        e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

它使用相同的格式解析其他日期,并且按预期工作.为什么会这样?

java date date-parsing simpledateformat java-8

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

如何检查字符串是否包含Java中的日期?

如何检查字符串是否包含此表单的日期:

2012年1月15日星期日美国东部时间下午7:36

我正在使用的数据包含大量字符串.但我正在寻找的字符串类型包含2或3个字的名称和日期.我正在检查日期以识别这些类型的字符串.

我已经为这种类型的日期找到了simpleDateFormat.

String string1 = "Rahul Chowdhury Sunday, January 15, 2012 at 7:37pm EST";
String string2 = "Aritra Sinha Nirmal Friday, April 1, 2016 at 10:16pm EDT";    

SimpleDateFormat format = new SimpleDateFormat("EEEEE, MMM dd, yyyy 'at' hh:mmaa z");
Run Code Online (Sandbox Code Playgroud)

但我不知道如何继续前进.

我猜测正则表达式可能有效,但我不知道如何实现这个,当月/日的名称长度不同时.即'May'比'December'短得多.

我想知道是否有使用正则表达式的解决方案或更简单的解决方案.

我知道还有其他线程提出类似的问题,但他们没有回答我的问题.

java regex string date simpledateformat

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

为什么SimpleDateFormat会更改日期?

给出以下代码:

[...]

    public void testFormatDateString() throws ParseException {

        String dateString = new java.util.Date().toString();

        System.out.println(dateString);

        SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss z YYYY", Locale.ENGLISH);

        Date date = format.parse(dateString);

        System.out.println(date.toString());
    }

[...]
Run Code Online (Sandbox Code Playgroud)

之前: Sat Aug 19 18:26:11 BST 2017

后: Sat Jan 07 17:26:11 GMT 2017

为什么日期改变了?

java formatting date simpledateformat

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