我正在尝试将LocalDate变量格式化为dd.MMM.YYYY:
DateTimeFormatter.ofPattern("dd.MMM.yyyy")
Run Code Online (Sandbox Code Playgroud)
问题是,超过一半的时间我得到两个点。例如01-01-2000转到01.Jan..2000.
我知道为什么我会遇到这个问题,因为这三个Ms。当我使用时dd.MM.yyyy,我没有01.01.2000问题。第三M是问题。
我怎样才能解决这个问题?
如何在Java中执行此转换?
目前,我正在做:
public static String formatDate(String strDateToFormat) {
try {
SimpleDateFormat sdfSource = new SimpleDateFormat("EEEE, MMMM DD, YYYY");
Date date = sdfSource.parse(strDateToFormat);
SimpleDateFormat sdfDestination = new SimpleDateFormat("yyyy-MM-dd");
return sdfDestination.format(date);
} catch (ParseException pe) {
System.err.println("Parse Exception : " + pe);
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
但是,这会导致格式不正确.它给了我以下输出:
Friday, February 1, 2013 > 2013-01-04
Thursday, January 31, 2013 > 2013-01-03
Run Code Online (Sandbox Code Playgroud) 当我尝试运行以下代码时:
LocalTime test = LocalTime.parse("8:00am", DateTimeFormatter.ofPattern("hh:mma"));
Run Code Online (Sandbox Code Playgroud)
我明白了:
Exception in thread "main" java.time.format.DateTimeParseException: Text '8:00am' could not be parsed at index 0
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?
LocalTime我在使用 java解析包含小时、分钟和秒的字符串时遇到问题。
LocalTime t = LocalTime.parse("8:30:17"); // Simplification
Run Code Online (Sandbox Code Playgroud)
这会引发以下异常:
线程“main”中的异常 java.time.format.DateTimeParseException:无法在索引 0 处解析文本“8:30:17”
我需要解析像1981年2月12日这样的字符串作为日期.我使用SimpleDateFormat.但如果我这样做:
new SimpleDateFormat("MMMMM dd, yyyy").parse("February 12, 1981")
Run Code Online (Sandbox Code Playgroud)
我得到java.text.ParseException.
我试图减少它以查看问题所在.第一:
new SimpleDateFormat("MMMMM").parse("February")
Run Code Online (Sandbox Code Playgroud)
作品.然后:
new SimpleDateFormat("MMMMM dd").parse("February 12")
Run Code Online (Sandbox Code Playgroud)
不再起作用了.谁知道为什么?我也试过了new SimpleDateFormat("MMMMM' 'dd").
我正在使用JRE 1.6.0_06.
我住在北卡罗来纳州,顺便说一句,这是在东边.所以我编译并运行这段代码并打印出同样的东西.文档说java.util.date尝试反映UTC时间.
Date utcTime = new Date();
Date estTime = new Date(utcTime.getTime() + TimeZone.getTimeZone("ET").getRawOffset());
DateFormat format = new SimpleDateFormat("dd/MM/yy h:mm a");
System.out.println("UTC: " + format.format(utcTime));
System.out.println("ET: " + format.format(estTime));
Run Code Online (Sandbox Code Playgroud)
这就是我得到的
UTC: 11/05/11 11:14 AM
ET: 11/05/11 11:14 AM
Run Code Online (Sandbox Code Playgroud)
但是,如果我去这个网站它试图反映所有不同的时间,UTC和ET是不同的.我在这里做错了什么
我正在使用Java 1.7。
尝试转换:
2018-05-23T23:18:31.000Z
Run Code Online (Sandbox Code Playgroud)
进入
2018-05-23 23:18:31
Run Code Online (Sandbox Code Playgroud)
DateUtils类:
public class DateUtils {
public static String convertToNewFormat(String dateStr) throws ParseException {
TimeZone utc = TimeZone.getTimeZone("UTC");
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
sdf.setTimeZone(utc);
Date convertedDate = sdf.parse(dateStr);
return convertedDate.toString();
}
}
Run Code Online (Sandbox Code Playgroud)
尝试使用它时:
String convertedDate = DateUtils.convertToNewFormat("2018-05-23T23:18:31.000Z");
System.out.println(convertedDate);
Run Code Online (Sandbox Code Playgroud)
得到以下异常:
Exception in thread "main" java.text.ParseException: Unparseable date: "2018-05-23T23:22:16.000Z"
at java.text.DateFormat.parse(DateFormat.java:366)
at com.myapp.utils.DateUtils.convertToNewFormat(DateUtils.java:7)
Run Code Online (Sandbox Code Playgroud)
我可能做错了什么?
有没有更简单的方法(例如Apache Commons lib)?
我正在尝试将 a 转换String为LocalDateusing DateTimeFormatter,但收到异常:
java.time.format.DateTimeParseException:无法在索引 5 处解析文本“ 2021-10-31 ”
我的代码是
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-uuuu");
String text = "2021-10-31";
LocalDate date = LocalDate.parse(text, formatter);
Run Code Online (Sandbox Code Playgroud)
我正在尝试从输入日期转换2021-10-31为31-Oct-2021.
java java-time localdate datetimeformatter datetimeparseexception
我正在使用Java 7和Clojure 1.4.
我在Clojure中编写了一些数据库测试,用于包含Date对象的表,使用OracleDB JDBC.
我需要比较我收到的日期(一个Date对象)和String- 所以我可能需要将该字符串转换为一个Date对象.经过一些谷歌搜索,我发现了Java SimpleDateFormat.
这是我使用的(有额外的东西用于调试)
(defn parseDate [date]
(do (debug (str "Parsing date: " date ))
(let [ dateobj (java.text.SimpleDateFormat. "dd-MMM-YY")
parsed (do (. dateobj setLenient false) (. dateobj parse date))]
(debug (str "Result: " parsed)) parsed)))
Run Code Online (Sandbox Code Playgroud)
我扔了一些日期,我得到以下输出..
Parsing date: 01-jan-12
Result: Mon Jan 02 00:00:00 GMT 2012
Parsing date: 01-jan-13
Result: Mon Dec 31 00:00:00 GMT 2012
Parsing date: 00-jan-12
Result: Mon Jan 02 00:00:00 …Run Code Online (Sandbox Code Playgroud) 先前创建的测试使用DateTimeFormatter.ofPattern("ha");并返回“10AM”(表示“ 2017-04-09T10:00-06:00[US/Mountain]”)。
在我的 MacO 和 Java 下 ['openjdk version "11.0.12"'] 我得到“10am”
"10AM" != "10am"
Run Code Online (Sandbox Code Playgroud)
在规范中,我看到“ha”应该创建“10AM”而不是“10am”,请参阅:https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
有什么建议吗?