I need to format a date to following format: 10.12.2014
and I am using the following code but it returns following error
Messages:
Unparseable date: "2014-12-10"
Run Code Online (Sandbox Code Playgroud)
Code
SimpleDateFormat formatter = new SimpleDateFormat("dd.mm.yyyy");
Date date = formatter.parse(param.getFromDate());
String formattedDate = formatter.format(date);
Run Code Online (Sandbox Code Playgroud) 我正在尝试确定要使用的 java 日期格式字符串
"Fri Jun 05 00:00:00 PDT 2015"
Run Code Online (Sandbox Code Playgroud)
现在我正在使用
SimpleDateFormat format = new SimpleDateFormat("EEE MM dd HH:mm:ss zzzz yyyy");
Run Code Online (Sandbox Code Playgroud)
但这会产生
com.fasterxml.jackson.databind.JsonMappingException:
java.text.ParseException: Unparseable date: "Fri Jun 05 00:00:00 PDT 2015"
(through reference chain:....
Run Code Online (Sandbox Code Playgroud) 在Android中,我用来java.util.Calendar
获取格式为昨天的日期yyyy-MM-dd'T'hh:mm:ss'Z'
。例如,如果今天是31 May 2017
,我想将昨天的日期设为2017-05-30T00:00:00Z
。
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
// Date End = yesterday
calendar.add(Calendar.DATE, -1);
Date dateEnd = calendar.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss'Z'");
this.dateEndStr = formatter.format(dateEnd);
Run Code Online (Sandbox Code Playgroud)
我期望输出为2017-05-30T00:00:00Z
. 但它给了我2017-05-30T12:00:00Z
。
这里有什么问题吗?与时区有关吗?我的时区是GMT/UTC + 08:00 hour
.
我正在尝试将日期从String
转换为Date
对象:
String dateString = "Mon, 04 Sep 2017 18:30:28";
String dateFormat = "EEE, dd MMM yyyy HH:mm:ss";
Run Code Online (Sandbox Code Playgroud)
导致以下异常:
java.text.ParseException:无法解析的日期:“2017 年 9 月 4 日星期一 18:30:28”
我尝试了不同的字符串和格式,问题似乎是周的名称('EEE')。没有它可以完美运行。
这也很完美:
String dateString = "04 Sep 2017 18:30:28, Mon";
String dateFormat = "dd MMM yyyy HH:mm:ss, EEE";
Run Code Online (Sandbox Code Playgroud) 我尝试从毫秒转换为日期字符串。但是,结果并不像我预期的那样正确。
输入是毫秒(例如:1508206600485
)
我的时区是 UTC +10:00
------Expected-------------------------------------------- Actual------
01:32 (PM) 17/10/2017--------------------------------02:32 (PM) 17/10/2017
Run Code Online (Sandbox Code Playgroud)
这是方法
public static String getDate(long milliSeconds) {
SimpleDateFormat formatter = new SimpleDateFormat("hh:mm dd/MM/yyyy");
String dateString = formatter.format(new Date(milliSeconds));
return dateString;
}
Run Code Online (Sandbox Code Playgroud) 我正在开发一个 android 应用程序,当我需要将我的当前日期发送到服务器时,我得到了我的实际日期currentTime = Calendar.getInstance().getTime();
,我正在使用SimpleDateFormat 解析它"yyyy/MM/DD"
,但是我得到的一天的值非常奇怪:38
有我正在使用的代码:
currentTime = Calendar.getInstance().getTime();
SimpleDateFormat df1 = new SimpleDateFormat("yyyy/MM/DD");
String formattedDate1 = df1.format(currentTime.getTime());
Run Code Online (Sandbox Code Playgroud)
注意:返回的日期值currentTime
是正确的
PS:此代码前几天工作正常!
package com.javacodegeeks.groovy.date
class GroovyDateArithmetic {
static main(args) {
def date = new Date().parse("dd.MM.yyy", '18.05.1988')
def datePlus = date.clone()
def dateMinus = date.clone()
datePlus = datePlus + 5
println datePlus
Run Code Online (Sandbox Code Playgroud)
上面的代码将打印 Mon May 23 00:00:00 EST 1988。如何格式化最终结果以生成 Mon May 23 1988。
我有一个简单的日期格式化程序,格式如下:
private static final String DATE_FORMAT = "yyyy-MM-dd";
private static final SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat(DATE_FORMAT);
//accessExpiryDate is a Date object
DATE_FORMATTER.format(accessExpiryDate);
Run Code Online (Sandbox Code Playgroud)
它将日期格式设置为 yyyy-MM-dd。但我想格式化日期,例如"1 Jun 2019"。日 + 月份的前 3 个字母 + 年。
我怎样才能做到这一点?有没有一个简单的方法/方法/类或者我应该编写我的自定义日期格式化程序方法?
我的输入日期为"2020-10-31T00:00:00Z"。我想解析这个日期以获得长毫秒。 注意:转换后的毫秒数应为悉尼时间(即 GMT+11)。
供参考,
public static long RegoExpiryDateFormatter(String regoExpiryDate)
{
long epoch = 0;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
df.setTimeZone(TimeZone.getTimeZone("GMT+11"));
Date date;
try {
date = df.parse(regoExpiryDate);
epoch = date.getTime();
} catch (ParseException e) {
System.out.println("Exception is:" + e.getMessage());
e.printStackTrace();
}
System.out.println("Converted regoExpiryDate Timestamp*************** " + epoch);
return epoch;
}
Run Code Online (Sandbox Code Playgroud)
输出: 1604062800000使用Epoch Converter将日期设为30/10/2019,但在输入中我将第 31 天作为日期传递。任何人都可以澄清这一点吗?
我必须List<Card>
在字段issueDate
(类型String
)上进行过滤,其中卡片要显示到过去 7 年的日期。
我尝试过的解决方案是issueDate
从String
to解析字段Date
,然后应用date.after(startDate)
,date.before(endDate)
如下所示:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cardList.stream()
.map(s->s.getIssueDate())
.filter(dt -> sdf.parse(dt).after(sdf.parse("2020-06-08")) &&
sdf.parse(dt).before(sdf.parse("2020-08-12")))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
甚至不能申请循环,因为可能有数百张卡发行,它通过迭代每个发卡日期(字符串到日期和检查年份)来影响性能
任何人都可以提出一个很好的解决方案来解决这个问题吗?
simpledateformat ×10
java ×9
date ×4
android ×2
calendar ×2
arraylist ×1
date-format ×1
datetime ×1
epoch ×1
groovy ×1
java-8 ×1
java-stream ×1
java-time ×1