模式是"dd-MM-yyyy"
我认为字符串"01-01-2010mwwwwwwwwwwwwwww"不满足模式,但以下代码显示相反.
有谁能解释为什么?
public static void main(String[] args) throws Exception {
SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy");
Date date = df.parse("01-01-2010mwwwwwwwwwwwwwww");
System.out.println(date);
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我Converter在JSF 1.2中创建了一个自定义来转换Date对象.日期有一个非常特殊的格式.我使用核心Java SimpleDateFormat类实现了转换器,使用下面的代码注释中显示的格式化程序字符串进行转换.一切正常.
我的问题是线程安全.该SimpleDateFormatAPI文档指出,这不是线程安全的.出于这个原因,我为我的转换器对象的每个实例创建了一个单独的日期格式对象实例.但是,我不确定这是否足够.我的DateFormat对象存储为.的成员DTGDateConverter.
问题:两个线程是否会同时访问JSF中的Converter对象的同一个实例?
如果答案是肯定的,那么我的转换器可能存在风险.
/**
* <p>JSF Converter used to convert from java.util.Date to a string.
* The SimpleDateFormat format used is: ddHHmm'Z'MMMyy.</p>
*
* <p>Example: October 31st 2010 at 23:59 formats to 312359ZOCT10</p>
*
* @author JTOUGH
*/
public class DTGDateConverter implements Converter {
private static final Logger logger =
LoggerFactory.getLogger(DTGDateConverter.class);
private static final String EMPTY_STRING = "";
private static final DateFormat DTG_DATE_FORMAT =
MyFormatterUtilities.createDTGInstance();
// …Run Code Online (Sandbox Code Playgroud) 我想从string转换为java.util.Date.出于同样的目的,我使用了以下代码,
String timeStamp = "Mon Feb 14 18:15:39 IST 2011";
DateFormat formatter = new SimpleDateFormat("dow mon dd hh:mm:ss zzz yyyy");
Date ts = (Date)formatter.parse(timeStamp);
Run Code Online (Sandbox Code Playgroud)
给SimpleDateFormat()的格式是java.util.Date的格式.当您将util的Date转换为字符串时,它会以这种格式出现('dow mon dd hh:mm:ss zzz yyyy').但是当我执行代码时,它给了我异常.我不知道究竟需要做些什么才能摆脱这个问题.我发布了异常的StackTrace部分.如果有人知道解决方案,
java.lang.IllegalArgumentException:在java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:576)的java.text.SimpleDateFormat.compile(SimpleDateFormat.java:769)中的非法模式字符"o",位于java.text.SimpleDateFormat.( SimpleDateFormat.java:501)at java.text.SimpleDateFormat.(SimpleDateFormat.java:476)先谢谢你了.
我试图解析一个字符串到目前为止,但输出看起来不正确:下面是我的代码.
public static void main(String[] args){
Date startDate = new Date();
DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy hh:mm:ss");
try {
startDate = (Date) formatter.parse("07.10.2012 12:19:24");
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Formatted Date " + startDate.toString());
}
Run Code Online (Sandbox Code Playgroud)
程序输出:
格式化的日期太阳07年10月00:19:24 IST 2012
期望输出:
格式化的日期太阳07年10月12个:19:24 IST 2012
将DateFormat时区设置为GMT + 1的正确字符串是什么?根据文件,它应该像"GMT + 00:00".我已经尝试过其他形式,但显然我总是回到GMT(我目前的时区).
提前致谢!
我正在尝试解析日期字符串,该字符串可以具有不同格式的树.即使String不应该与第二个模式匹配,它也会以某种方式返回错误的日期.
那是我的代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Start {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
try{
System.out.println(sdf.format(parseDate("2013-01-31")));
} catch(ParseException ex){
System.out.println("Unable to parse");
}
}
public static Date parseDate(String dateString) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
SimpleDateFormat sdf2 = new SimpleDateFormat("dd-MM-yyyy");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
Date parsedDate;
try {
parsedDate = sdf.parse(dateString);
} catch (ParseException ex) {
try{
parsedDate = sdf2.parse(dateString);
} catch (ParseException ex2){
parsedDate = sdf3.parse(dateString);
}
} …Run Code Online (Sandbox Code Playgroud) 我有日期和时间格式的yyyy-MM-dd:HH:mm我要增加dd一个,即2013-10-24:11:20到2013-10-25:11:20
SimpleDateFormat mSDF = new SimpleDateFormat("yyyy-MM-dd:HH:mm");
time = mSDF.format(calSet.getTime());//calset in my calendar instance
Run Code Online (Sandbox Code Playgroud)
我不知道我的时间/日期到底是什么.我只知道我必须为time变量增加一个日期
如何将日期格式从"dd MMM yyyy"转换为"yyyy-MM-dd"?
我知道我必须使用,SimpleDatFormat但它不起作用,也没有任何类似问题的解决方案.
我有一个日期"2015年12月18日",我正在尝试格式化,但我明白了
java.text.ParseException: Unparseable date: "18 Dec 2015"
这是我的代码:
public String parseDate(String d) {
String result = null;
Date dateObject = null;
SimpleDateFormat dateFormatter = new SimpleDateFormat("dd MMM yyyy");
try {
dateObject = dateFormatter.parse(d);
dateFormatter.applyPattern("yyyy-MM-dd");
result = dateFormatter.format(dateObject);
} catch (ParseException e) {
System.out.println(e);
}
return result;
}
Run Code Online (Sandbox Code Playgroud) 我String在数据库(match.getDate)中具有以下日期格式:
01/04/2018
这是我要格式化的日期,存储为日/月/年。我想为我的Android应用设置格式。
我想将日期格式化为:
星期日2018年4月1日
我的代码如下:
SimpleDateFormat fDate = new SimpleDateFormat("dd/MM/yyyy");
try {
textViewDate.setText(fDate.parse(match.getDate()).toString());
} catch (ParseException ex) {
System.out.println(ex.toString());
}
Run Code Online (Sandbox Code Playgroud)
输出:
周日四月08 00:00:00 GMT + 00:00 2018。
我也尝试过"EE, MM d, yyyy",但是它给了我:
java.text.ParseException:无法解析的日期:“ 01/04/2018”
我有这小段代码:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
SimpleDateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz");
System.out.println(format.format(new Date()));
}
}
Run Code Online (Sandbox Code Playgroud)
使用Java 8,输出为:
Tue, 16 Jul 2019 13:16:54 AEST
使用Java 11:
Tue., 16 Jul. 2019 13:16:54 AEST
为什么会有区别?我该如何修改代码以使其在两个Java版本中均能正常工作?
我实际上是在发现此问题时使用的是Handlebars,可以将其范围缩小到Java版本-但是知道如何使用Handlebars为相同的格式字符串产生相同的结果会很酷。
java ×10
simpledateformat ×10
date ×5
date-format ×2
android ×1
converter ×1
date-parsing ×1
datetime ×1
java-11 ×1
java-8 ×1
jsf ×1
parsing ×1
timezone ×1