标签: simpledateformat

如何使用SimpleDateFormat将String转换为Date?

我有这段代码:

DateFormat formatter1;
formatter1 = new SimpleDateFormat("mm/DD/yyyy");
System.out.println((Date)formatter1.parse("08/16/2011"));
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我将其作为输出:

Sun Jan 16 00:10:00 IST 2011
Run Code Online (Sandbox Code Playgroud)

我期望:

Tue Aug 16 "Whatever Time" IST 2011
Run Code Online (Sandbox Code Playgroud)

我的意思是说我没有达到预期的月份.这是什么错误?

java datetime date-format simpledateformat

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

SimpleDateFormat解析丢失时区

码:

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss z");
    sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
    System.out.println(new Date());
    try {
        String d = sdf.format(new Date());
        System.out.println(d);
        System.out.println(sdf.parse(d));
    } catch (Exception e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }
Run Code Online (Sandbox Code Playgroud)

输出:

Thu Aug 08 17:26:32 GMT+08:00 2013
2013.08.08 09:26:32 GMT
Thu Aug 08 17:26:32 GMT+08:00 2013
Run Code Online (Sandbox Code Playgroud)

请注意,format()格式Date正确格式为GMT,但parse()丢失了GMT详细信息.我知道我可以使用substring()并解决这个问题,但这种现象背后的原因是什么?

这是一个重复的问题,没有任何答案.

编辑:让我以另一种方式提出问题,检索Date对象的方式是什么,以便它始终在GMT中?

java date gmt simpledateformat

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

如何使用Java中的DateFormat解析月份完整表单字符串?

我试过了

DateFormat fmt = new SimpleDateFormat("MMMM dd, yyyy");
Date d = fmt.parse("June 27, 2007");
Run Code Online (Sandbox Code Playgroud)

Exception in thread "main" java.text.ParseException: Unparseable date: "June 27, 2007"

java文档说我应该使用四个字符来匹配完整的表单.我只能使用像"Jun"这样的缩写月份成功使用MMM,但我需要匹配完整的表格.

文本:对于格式化,如果模式字母的数量为4或更多,则使用完整形式; 否则,如果可用,则使用简短或缩写形式.对于解析,两种形式都被接受,与模式字母的数量无关.

http://java.sun.com/j2se/1.6.0/docs/api/java/text/SimpleDateFormat.html

java simpledateformat

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

如何使用SimpleDateFormat以多种格式解析日期

我正在尝试解析文档中出现的一些日期.看起来用户已经以类似但不精确的格式输入这些日期.

以下是格式:

9/09
9/2009
09/2009
9/1/2009
9-1-2009 
Run Code Online (Sandbox Code Playgroud)

尝试解析所有这些问题的最佳方法是什么?这些似乎是最常见的,但我想是什么让我感到高兴的是,如果我有一个"M/yyyy"模式,那么总是会在"MM/yyyy"之前捕获我是否必须设置我的try/catch块嵌套在限制最少的限制性方式?似乎肯定会采取大量代码重复来实现这一目标.

java datetime parsing simpledateformat

49
推荐指数
8
解决办法
8万
查看次数

具有德语语言环境的SimpleDateFormat - Java 8与Java 10+

我在遗留应用程序中有代码和测试用例,可归纳如下:

@Test
public void testParseDate() throws ParseException {
    String toParse = "Mo Aug 18 11:25:26 MESZ +0200 2014";
    String pattern = "EEE MMM dd HH:mm:ss z Z yyyy";

    DateFormat dateFormatter = new SimpleDateFormat(pattern, Locale.GERMANY);
    Date date = dateFormatter.parse(toParse);

    //skipped assumptions
}
Run Code Online (Sandbox Code Playgroud)

该测试通过Java 8及以下版本.然而,随着Java 10向上,这导致了一个java.text.ParseException: Unparseable date: "Mo Aug 18 11:25:26 MESZ +0200 2014".

备案:另外de_DE,异常也抛出了语言环境 de_CH,de_AT,de_LU.

我知道使用JDK 9(JEP 252)更改了日期格式.但是,我认为这是破坏向后兼容性的颠覆性变化.摘录:

在JDK 9中,Unicode Consortium的公共区域设置数据存储库(CLDR)数据作为默认区域设置数据启用,因此您可以使用标准区域设置数据而无需任何进一步操作.

在JDK …

java simpledateformat java-8 java-9 java-10

49
推荐指数
1
解决办法
2700
查看次数

SimpleDateFormat返回24小时日期:如何获得12小时的约会?

我想要以毫秒为单位的当前时间然后以12小时格式存储它,但是使用这段代码我得到24小时格式时间.

long timeInMillis = System.currentTimeMillis();
Calendar cal1 = Calendar.getInstance();
cal1.setTimeInMillis(timeInMillis);
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy HH:mm:ss a");
dateforrow = dateFormat.format(cal1.getTime());
Run Code Online (Sandbox Code Playgroud)

任何人都可以提出修改以获得理想的结果?

java android simpledateformat

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

Java格式yyyy-MM-dd'T'HH:mm:ss.SSSz到yyyy-mm-dd HH:mm:ss

我正在尝试将yyyy-MM-dd'T'HH:mm:ss.SSSz格式的日期格式化为yyyy-mm-dd HH:mm:ss,这应该很容易,但我不能让它工作.

必须解析的日期格式为:2012-10-01T09:45:00.000 + 02:00
现在我使用这个简单的日期格式化程序来格式化它:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz", Locale.FRANCE);
Run Code Online (Sandbox Code Playgroud)

但是这给出了类似于2012-10-01T09的输出:45:00.000UTC + 00:00.

我也尝试使用"yyyy-MM-dd'T'HH:mm:ss.SSSZ"作为模式和"yyyy-MM-ddHH:mm:ss".后者以2012-10-01T09:45:00的形式返回日期,但尚未结束.

我认为将T分离出来会有点乱,并且无缘无故地创造开销,那么格式化这些日期的正确方法是什么?

为了说明我想将2012-10-01T09:45:00.000 + 02:00转换成2012-10-01 09:45:00

干杯!

java parsing date simpledateformat

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

java.text.ParseException:无法解析的日期

我在尝试使用代码时正在解析异常

    String date="Sat Jun 01 12:53:10 IST 2013";
    SimpleDateFormat sdf=new SimpleDateFormat("MMM d, yyyy HH:mm:ss");
    Date currentdate;
    currentdate=sdf.parse(date);
    System.out.println(currentdate);
Run Code Online (Sandbox Code Playgroud)

例外

    String date="Sat Jun 01 12:53:10 IST 2013";
    SimpleDateFormat sdf=new SimpleDateFormat("MMM d, yyyy HH:mm:ss");
    Date currentdate;
    currentdate=sdf.parse(date);
    System.out.println(currentdate);
Run Code Online (Sandbox Code Playgroud)

输入:Sat Jun 01 12:53:10 IST 2013

预期产量:Jun 01,2013 12:53:10

怎么解决这个?

java simpledateformat parseexception

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

Android解析字符串到日期 - 未知模式字符'X'

Service从网上获取日期字符串,然后我想把它削减到Date对象.但不知何故应用程序崩溃.这是我正在解析的字符串:2015-02-05T05:20:02+00:00

onStartCommand()

String datetime = "2015-02-05T05:20:02+00:00";
Date new_date = stringToDate(datetime);
Run Code Online (Sandbox Code Playgroud)

stringToDate()

private Date stringToDate(String s){
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
    try{
        return df.parse(s);
    }catch(ParseException e){
        e.printStackTrace();
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

logcat的:

02-06 20:37:02.008: E/AndroidRuntime(28565): FATAL EXCEPTION: main
02-06 20:37:02.008: E/AndroidRuntime(28565): Process: com.dotmav.runescapenotifier, PID: 28565
02-06 20:37:02.008: E/AndroidRuntime(28565): java.lang.RuntimeException: Unable to start service com.dotmav.runescapenotifier.GEService@384655b5 with Intent { cmp=com.dotmav.runescapenotifier/.GEService }: java.lang.IllegalArgumentException: Unknown pattern character 'X'
02-06 20:37:02.008: E/AndroidRuntime(28565):    at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2881)
02-06 20:37:02.008: E/AndroidRuntime(28565):    at android.app.ActivityThread.access$2100(ActivityThread.java:144)
02-06 20:37:02.008: …
Run Code Online (Sandbox Code Playgroud)

java android date simpledateformat

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

SimpleDateFormat中的可选部分

我正在读日期字符串,可能有或没有时区调整:yyyyMMddHHmmsszyyyyMMddHHmmss.当一个字符串缺少一个区域时,我将其视为GMT.我没有看到任何方式在a中创建可选部分SimpleDateFormat,但也许我错过了一些东西.有没有办法用a做这个SimpleDateFormat,或者我应该写一个新的具体DateFormat来处理这个?

java datetime localization simpledateformat

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