我有一个以下格式的日期对象:
2013 年 1 月 20 日星期日 10:12:27 GMT+02:00
上述时间正确显示在 Microsoft Outlook 中:
2013 年 1 月 20 日星期日 12:12 PM(这是 GMT+2 >> 客户端时区的时间)
当尝试将日期对象格式化为SimpleDateFormat在 Outlook 中显示时,使用以下代码:
SimpleDateFormat sdf=new SimpleDateFormat(
"EEE M/d/yyyy hh:mm a");
String receivedDate = sdf.format(email.getDateTimeReceived());
Run Code Online (Sandbox Code Playgroud)
格式化的结果是:
2013 年 1 月 20 日星期日 10:12
所以缺少两个小时的时区差异。
请告知如何解决该问题,谢谢。
在运行以下代码时,我得到了一个UNPARSABLE DATE EXCEPTION.
我该如何解决?
package dateWork;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateCreation {
/**
* @param args
*/
public static void main(String[] args) {
String startDateString = "2013-03-26";
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Date startDate=null;
String newDateString = null;
try
{
startDate = df.parse(startDateString);
newDateString = df.format(startDate);
System.out.println(startDate);
} catch (ParseException e)
{
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud) 我得到的日期格式为:MM-dd-yy hmma zzz。问题是我只在上午得到 A 或在下午得到 P。如何将具有该格式的字符串解析为日期对象?
在我的程序中有一个非常奇怪的问题.在这里你可以看到String birthday并Log检查它:
birthday = String.valueOf(birthYear) + "-" + String.valueOf(birthMonth) + "-" + String.valueOf(birthDay);
Log.i(TAG, "Birthday: " + birthday)
Run Code Online (Sandbox Code Playgroud)
然后我把它放到SimpleDateFormat并检查它Log:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
Date birthDate = sdf.parse(birthday);
Log.i(TAG, "Birth date : " + birthDate);
Run Code Online (Sandbox Code Playgroud)
然后Logcat我有:
I/App? Birthday: 1999-10-15
I/App? Birth date: Fri Jan 15 00:10:00 GMT+04:00 1999
Run Code Online (Sandbox Code Playgroud)
正如你在日期中看到的那样Jan,但是在字符串中它的10日期应如下所示:
Fri Nov 15 00:10:00 GMT+04:00 1999
Run Code Online (Sandbox Code Playgroud)
我的错误在哪里?
PS我认为我的问题与使用SimpleDateFormat.parse()时获取错误数据有某种联系
我正在尝试以 ( ) 格式获取日期的输出String:
\n\n\n20170801\xe2\x80\x8b \xe2\x80\x8b123030\xe2\x80\x8b \xe2\x80\x8b美国/洛杉矶
\n
但使用这段代码:
\n\nSimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd hhmmss Z", Locale.US);\nsdf.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));\nSystem.out.println(sdf.format(new java.util.Date()));\nRun Code Online (Sandbox Code Playgroud)\n\n我得到的输出为(注意区域部分):
\n\n\n\n\n20174904 024908 -0700
\n
知道如何修复它吗?我需要打印"\xe2\x80\x8bAmerica/Los_Angeles"而不是"-0700".
我有以下 Java 代码。
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy");
String expiryDateInString = "05/14/86";
final Instant expiryDate = dateFormat.parse((expiryDateInString)).toInstant();
Run Code Online (Sandbox Code Playgroud)
我希望这会导致解析异常,但我得到的年份被解析为 0086,我相信这已经是过去的事了。我怎样才能使年份成为严格的 4 位数年份,而其他任何年份都会例外。
如何将日期格式设置为以下视图 OCTOBER 21, 2018(月份大写)?我可以通过"%1$TB %1$te, %1$tY"模式获取它,但我需要通过 SimpleDateFormat 来完成。你能建议我该怎么做吗?
我正在尝试解析日期字符串,SimpleDateFormat它永远不会停止也不给出任何异常。请看下面的代码,
fun getDate(dateStr: String) {
try {
/** DEBUG dateStr = '2006-04-16T04:00:00Z' **/
val formatter = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH)
val mDate = formatter.parse(dateStr) // this never ends while debugging
} catch (e: Exception){
Logger.e("Error $e") // this never gets called either
}
}
Run Code Online (Sandbox Code Playgroud)
可能的问题是什么?
注意:我正在使用,
Android Studio:3.4.1,Kotlin 版本:1.3.31,最小 SDK:23,目标 SDK:28,编译 SDK:28
首先,请注意我在这里坚持使用 java6。
我正在尝试从可能采用不同格式的字符串中获取日期。出于某种原因,我没有得到 ParseException ,我希望有一个......
import java.text.SimpleDateFormat;
import java.util.Date;
public class test1{
public static void main(String argc[]){
System.out.println(parseAllDateFormats(argc[0]));
}
private static final String[] dateFormats = "yyyyMMdd,yyyy/MM/dd,yyyy-MM-dd,dd/MM/yyyy,dd-MM-yyyy,dd-MMM-yyyy,yyyy MM dd".split(",");
public static Date parseAllDateFormats(String date) {
if (date == null)
return null;
for (int f = 0; f < dateFormats.length; f++) {
String format = dateFormats[f];
try {
SimpleDateFormat dateFormat = new SimpleDateFormat(format);
System.out.println("trying " + format);
return dateFormat.parse(date);
}
catch (Exception e) {}
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
运行:java test1 1980-04-25 …
我有点使用以下源来创建我自己的 sdf 模式:https : //docs.oracle.com/en/java/javase/13/docs/api/java.base/java/text/SimpleDateFormat.html
很遗憾
SimpleDateFormat mFormatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
...
private Date getLatestTimeStamp() throws ParseException {
return mFormatter.parse("Mon, 19 Dec 2019 11:32:04 +0000");
}
Run Code Online (Sandbox Code Playgroud)
导致以下错误,我不明白为什么:
java.text.ParseException: Unparseable date: "Mon, 19 Dec 2019 11:32:04 +0000"
Run Code Online (Sandbox Code Playgroud)
任何帮助都是极好的!
编辑:我正在使用 JDK 13
编辑2:
因此,我清理了我的代码,创建了一个新项目,但它仍然无法正常工作:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
String source = "Thu, 19 Dec 2019 11:32:04 +0000";
DateTimeFormatter mFormatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss Z"); …Run Code Online (Sandbox Code Playgroud) simpledateformat ×10
java ×9
datetime ×4
date-format ×3
android ×2
date ×1
debugging ×1
java-13 ×1
kotlin ×1
parsing ×1
timezone ×1
unparseable ×1
uppercase ×1