标签: simpledateformat

是否有另一种方法来检索给定语言环境的默认模式?

是否可以检索给定语言环境的默认模式,而不会将返回的对象DateFormat.get*Instance()转换为SimpleDateFormat

据我所知,在大多数情况下,一切都会好的,但有一个音符javadoc,在这里:"如果你想在格式或分析更精确的控制,(或者希望给用户更多的控制),可以尝试铸造DateFormat你从工厂的方法到a SimpleDateFormat.这对大多数国家都有用; 只要try你遇到一个不寻常的国家,就记得把它放在一个街区."

所以我想知道,如果我" 遇到一个不寻常的人 " ,我该怎么办?

相关主题.

代码示例:

/**
 * Returns '\n'-separated string with available patterns.
 * Optional adds appropriate language code to each pattern string.
 * 
 * @param showLanguage Defines if language info is required.
 * @return  String with available patterns, optional (if showLanguage is set
 * to "true") adds appropriate language code to each pattern.
 */
public String getPatternsForAvailableLocales(Boolean... …
Run Code Online (Sandbox Code Playgroud)

java locale simpledateformat

6
推荐指数
1
解决办法
2084
查看次数

java.text.ParseException:Unparseable date:yyyy-MM-dd HH:mm:ss.SSSSSS

我正在获取ParseException以下代码

    String dateStr = "2011-12-22 10:56:24.389362";
    String formatStr = "yyyy-MM-dd HH:mm:ss.SSSSSS";
    Date testDate = null;
    SimpleDateFormat sdf= new SimpleDateFormat(formatStr);
    sdf.setLenient(false);
    testDate = sdf.parse(dateStr);

    System.out.println("CHECK DATE " + sdf.format(testDate));
Run Code Online (Sandbox Code Playgroud)

Exception in thread "main" java.text.ParseException: Unparseable date: "2011-12-22 10:56:24.389362" at java.text.DateFormat.parse(DateFormat.java:337)

如果我注释掉该行sdf.setLenient(false),那么我会看到输出的时间差 CHECK DATE 2011-12-22 11:02:53.000362

我究竟做错了什么??

java simpledateformat parseexception

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

为什么在Java中将String解析为Date很慢?我们可以加速吗?

我正在读取包含日期的文本文件,我想在Java中将表示日期的字符串解析为Date对象.我注意到操作很慢.为什么?有没有办法加速呢?我的文件看起来像:

2012-05-02 12:08:06:950, secondColumn, thirdColumn
2012-05-02 12:08:07:530, secondColumn, thirdColumn
2012-05-02 12:08:08:610, secondColumn, thirdColumn
Run Code Online (Sandbox Code Playgroud)

我正在逐行读取文件,然后我String从每一行获取日期,然后我Date使用SimpleDateFormat如下方法将其解析为对象:

DataInputStream in = new DataInputStream(myFileInputStream);
BufferedReader  br = new BufferedReader(new InputStreamReader(in));
String strLine;

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
while ((strLine = br.readLine()) != null)
{
    ....Do things....
    Date myDateTime = (Date)formatter.parse(myDateString);
    ...Do things....
}
Run Code Online (Sandbox Code Playgroud)

java date date-parsing simpledateformat

6
推荐指数
1
解决办法
2296
查看次数

Java中的奇怪日期解析错误

在解析java中的大量日期时,我偶尔会遇到这个奇怪的错误:

java.lang.NumberFormatException: For input string: ".201144E4.201144E4"
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1250)
    at java.lang.Double.parseDouble(Double.java:540)
    at java.text.DigitList.getDouble(DigitList.java:168)
    at java.text.DecimalFormat.parse(DecimalFormat.java:1321)
    at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1793)
    at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1455)
    at java.text.DateFormat.parse(DateFormat.java:355)
    at gameloop.tf2tradebot.user.UserManager.getUser(UserManager.java:102)
    at gameloop.tradebot2.bot.weaponbot1.Weaponbot1.onMessageReceived(Weaponbot1.java:269)
    at gameloop.api.steam.chat.ChatEvent.run(ChatEvent.java:49)
    at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

我这个例子,日期是

2014-12-13 06:56:27
Run Code Online (Sandbox Code Playgroud)

日期格式是

private static final DateFormat STANDARD_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
Run Code Online (Sandbox Code Playgroud)

我的代码:

Date firstSeenDate = null;
try
{
    firstSeenDate = STANDARD_DATE_FORMAT.parse(firstSeen);
}
catch(Exception pe)
{
    pe.printStackTrace();
    logger.outputError(4001, "Error parsing first seen date. Shutting down...");
    logger.outputError(4001, "First seen date : \'" + firstSeen + "\'");
    CH405BotServer.shutdown(logger.getCallerName(), "an error in parsing …
Run Code Online (Sandbox Code Playgroud)

java datetime parsing date simpledateformat

6
推荐指数
1
解决办法
761
查看次数

SimpleDateFormat.parse将errorIndex返回为0

使用jdk1.7.0_55,我将parseposition.errorIndex设为0,以防时区不是标准的.

但是使用jdk1.6.0_38我得到的parseposition.errorIndex为21,用于相同的错误时区格式

以下是样本:

String date = "13 Jan 2005 21:45:34 ABC";
String format = "dd MMM yyyy HH:mm:ss z";
ParsePosition pp = new ParsePosition(0);
pp.setIndex(0);
SimpleDateFormat sd = new SimpleDateFormat(format,Locale.ENGLISH);
Date d = sd.parse(date,pp);
System.out.println("Error Index "+pp.getErrorIndex());
Run Code Online (Sandbox Code Playgroud)

结果使用jdk 6:

错误索引21

结果使用jdk 7

错误索引0

为什么会有区别?

请帮忙

java jdk1.6 simpledateformat java-7

6
推荐指数
1
解决办法
209
查看次数

从给定的日期和时间创建30分钟的插槽

我有时间以下格式

2015-10-28T18:37:04.899 + 05:30

我必须以下面的格式创建插槽

上午11点至下午12点

2015年10月28日下午12点至下午1点

下午1点至2点28分

String timeValue = "2015-10-28T18:37:04.899+05:30";
        StringTokenizer  stringTokenizer = new StringTokenizer(timeValue,"T");
        String dateValue = stringTokenizer.nextElement().toString();
        String endDateValue = "2015-10-30";
        String restString= stringTokenizer.nextElement().toString();
        StringTokenizer secondTokeniser = new StringTokenizer(restString,":");
        String hours = secondTokeniser.nextElement().toString();
        String minutes = secondTokeniser.nextElement().toString();
        hours = String.valueOf(Integer.parseInt(hours) + 2);
        if (Integer.parseInt(minutes) > 30){
            minutes = "00";
        }else{
            minutes = "30";
        }

        String amOrPm = null;
        if(Integer.parseInt(hours) < 12){
            amOrPm = "AM";
        }else{
            amOrPm = "PM";
            hours = String.valueOf(getHoursValue(Integer.parseInt(hours)));
        }
        String time1 = hours …
Run Code Online (Sandbox Code Playgroud)

datetime android date simpledateformat

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

使用SimpleDateFormat时,未知的模式字符'x'

我试图将a格式化DateString使用SimpleDateFormat,而im使用的模式就是这个

"YYYY-MM-dd'T'HH:MM:ss.SSSxxx"

但到达这条线时

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

我得到以下异常:

java.lang.IllegalArgumentException:在java.text.SimpleDateFormat的java.text.SimpleDateFormat.validatePattern(SimpleDateFormat.java:312)的java.text.SimpleDateFormat.validatePatternCharacter(SimpleDateFormat.java:323)中的未知模式字符'x'. SimpleDateFormat.java:365)at java.text.SimpleDateFormat.(SimpleDateFormat.java:258)

我试图实现的格式是" 2017-06-16T12:19:59.001 + 02:00 "

根据文档这个模式应该工作什么错了?

编辑 为了澄清,我尝试了xxx和XXX

在XXX的情况下我得到java.lang.IllegalArgumentException:未知的模式字符'X'

java android simpledateformat android-date

6
推荐指数
3
解决办法
4798
查看次数

在不使用SimpleDateFormat的情况下将字符串解析为日期?

我正在开发一个spring应用程序,在我的一个控制器中,我有以下行从字符串到日期进行解析,并将解析的日期格式化为所需的格式.但是我需要在没有使用任何SimpleDateFormat的情况下将格式化的字符串解析回日期,所以有可能这样做吗?

SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");

Date pick=dateFormat.parse(request.getParameter("pickDate"));
String pick_date=dateFormat2.format(pick);
Run Code Online (Sandbox Code Playgroud)

java date-parsing simpledateformat date-formatting

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

在Java中解析字符串中的不同日期格式

我有一个字符串,可能包含以下任何格式的日期:

2001-01-05 (yyyy-mm-dd)
2001/01/05 (yyyy/mm/dd)
01/05/2001 (dd/mm/yyyy)
01-05-2001 (dd-mm-yyyy)
2001 january 5
2001 5 january
january 5 2001
5 january 2001
january 5
5 january
Run Code Online (Sandbox Code Playgroud)

我希望能够解析特定的字符串并从中提取Date对象.

我的方法如下:

String[] date_formats = {
                            "yyyy-MM-dd",
                            "yyyyy/MM/dd", 
                            "dd/MM/yyyyy",
                            "dd-MM-yyyy",
                            "yyyy MMM dd",
                            "yyyy dd MMM",
                            "dd MMM yyyy",
                            "dd MMM",
                            "MMM dd",
                            "dd MMM yyyy"};

String output_date = null;
for (String formatString : date_formats)
{
     try
     {    
         Date mydate = new SimpleDateFormat(formatString).parse(token);
         SimpleDateFormat outdate = new SimpleDateFormat("yyyyMMdd");
         output_date = outdate.format(mydate);
         break;
     }
     catch (ParseException …
Run Code Online (Sandbox Code Playgroud)

java datetime date simpledateformat

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

为什么java的SimpleDateFormat在使用SimpleTimeZone时从我的UTC日期减去1秒

有人可以解释为什么SimpleDateFormat在使用SimpleTimeZone设置时区时将我的解析日期减去1秒?

这是一个jdk bug吗?

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.SimpleTimeZone;
import java.util.TimeZone;

public class SimpleDateFormatTest {

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");

        format.setTimeZone(TimeZone.getTimeZone("UTC"));
        System.out.println(format.parse("2016-02-24T17:31:00Z")); 
        // prints Wed Feb 24 17:31:00 UTC 2016

        format.setTimeZone(new SimpleTimeZone(SimpleTimeZone.UTC_TIME, "UTC"));
        System.out.println(format.parse("2016-02-24T17:31:00Z")); 
        // Wed Feb 24 17:30:59 UTC 2016
    }

}
Run Code Online (Sandbox Code Playgroud)

java simpledateformat

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