相关疑难解决方法(0)

java.text.ParseException:无法解析的日期:java.text.DateFormat.parse(DateFormat.java:579)

我有问题SimpleDateFormat

SimpleDateFormat dtfmt=new SimpleDateFormat("dd MMM yyyy hh:mm a", Locale.getDefault());
Date dt=dtfmt.parse(deptdt);
Run Code Online (Sandbox Code Playgroud)

在 Android 模拟器中工作正常,但在手机中出现此错误:

W/System.err: java.text.ParseException: Unparseable date: "24 Oct 2016 7:31 pm" (at offset 3) W/System.err: at java.text.DateFormat.parse(DateFormat.java:579)

有什么解决办法吗?

java android date datetime-parsing unparseable

2
推荐指数
1
解决办法
1211
查看次数

如何向日历对象添加一天并考虑夏令时?

我正在尝试为列表中的对象创建时间限制。这可能意味着物品的保质期可能为 23、24 或 25 小时。有没有有用的 Java 库?这是我到目前为止所拥有的。

我的问题是,例如,当我在上午 9:30 创建记录时,必须在第二天上午 9:30 将其删除。当夏令时生效期间,我会遇到差异。该记录要么在 8:30 要么 10:30 被删除,具体取决于我是向前还是向后跳。

//baseValue = object that I want to check

Date dt = new Date();
Calendar c = Calendar.getInstance(); 
c.setTime(dt); 
c.add(Calendar.DATE, -1);

if(baseValue.getTime() < c.getTime()){
    array.remove(baseValue);
}
Run Code Online (Sandbox Code Playgroud)

java datetime date dst

2
推荐指数
1
解决办法
1261
查看次数

SimpleDateFormat.parse()返回格式“ YYYY / MMM / d”的错误日期

我不明白为什么解析后还能收到其他日期:

Date date = new Date();
System.out.println(date);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYY/MMM/d");
String dateString = simpleDateFormat.format(date);
System.out.println(dateString);
date = simpleDateFormat.parse(dateString);
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)

输出:

Tue Apr 09 12:18:35 AST 2019
2019/Apr/9
Mon Dec 31 12:00:00 AST 2018
Run Code Online (Sandbox Code Playgroud)

java date simpledateformat

2
推荐指数
1
解决办法
78
查看次数

Java SimpleDateFormat 接受无效日期。使用格式 'MM/dd/yyyy' 解析 '01/01/2021anything'

我正在尝试将字符串日期值解析为日期对象。如果提供的日期格式不正确,则必须抛出错误。试图用 来实现这一点SimpleDateFormat,但它没有按预期工作。

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
sdf.setLenient(false);
Date d = sdf.parse("01/01/2021anything");
System.out.println(d);
Run Code Online (Sandbox Code Playgroud)

对于上面的代码,Fri Jan 01 00:00:00 GMT 2021我得到了预期的输出ParseException。有人可以解释为什么会发生这种情况以及我如何使用 验证上述日期SimpleDateFormat。感谢您的努力。

java simpledateformat

2
推荐指数
1
解决办法
852
查看次数

Java中排除周末的日期差异计算

我对 Java 平台非常初学者和陌生。我有以下 3 个简单的 Java 日期差计算函数。我想在所有 3 种方法中排除以下计算中的周末。任何人都可以帮助如何在以下 dateDiff 计算中排除周末吗?

public static String getDatesDiff(String date1, String date2) {

    String timeDiff = "";
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date d1 = null;
    Date d2 = null;

    try {
        d1 = format.parse(date1);
        d2 = format.parse(date2);
        long diff = d2.getTime() - d1.getTime();
        timeDiff = ""+diff;
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
    return timeDiff;
}
Run Code Online (Sandbox Code Playgroud)
public static String getDatesDiffAsDays(String date1, String date2) {
    String timeDiff = ""; …
Run Code Online (Sandbox Code Playgroud)

java datediff date-difference

2
推荐指数
1
解决办法
1662
查看次数

如何防止SimpleDateFormat解析错误的格式化日期?

SimpleDateFormat用来解析字符串到Date对象,我想知道为什么结果不是我所期望的.

例如:

DateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd");

Date date = yyyyMMdd.parse("20100725");
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)

按预期工作和输出

Sun Jul 25 00:00:00 CEST 2010
Run Code Online (Sandbox Code Playgroud)

Date date = yyyyMMdd.parse("2010-07-25");
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)

工作和输出

Mon Dec 07 00:00:00 CET 2009
Run Code Online (Sandbox Code Playgroud)

我期待一个ParseException,但似乎SimpleDateFormat将月份部分-07和日期部分解释-25为负数.首先,我无法弄清楚它是如何到达12月7日的.所以我尝试了另一个值:

Date date = yyyyMMdd.parse("2010-7-25");
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)

而且它的结果

Sun Apr 05 00:00:00 CEST 2009
Run Code Online (Sandbox Code Playgroud)

因此,它似乎以某种方式减去了可能是5月1 7日的2010那一个月,以及25几天,所以结果是2009年4月5日.

yyyyMMdd在服务实现中使用该模式的图像和某个客户端意外地将日期发送为yyyy-MM-dd.你不会得到例外.相反,你会得到完全不同的日期.我想这不是你所期望的.

例如

String clientData = "2010-05-23";

DateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd"); …
Run Code Online (Sandbox Code Playgroud)

java date simpledateformat

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

将字符串日期与今天的日期进行比较.只比较月和日

我有这样的格式的日期字符串:19930508.我想从这个字符串中仅使用0508这是MMdd,而不是将它与今天的MMdd进行比较.我使用的代码是:

Date todaysDate = new Date();
String dateTest = "19930508";
SimpleDateFormat df = new SimpleDateFormat("MMdd");
Date date = df.parse(dateTest);
String birthDate = df.format(date);

if(birthDate.equals(df.format(todaysDate))){do something}
Run Code Online (Sandbox Code Playgroud)

问题是,生日形式的甲酸盐无法正常运作今天的日期.日期日期var打印没有和birthDate字符串打印0220这对我没有意义.任何人如果能够使用这种格式化并将其与今天的日期进行比较?

java datetime date

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

如何使用java获取上一季度的详细信息

我已经达到上一季度,如下所示:

Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int presentQuarter = (month / 3) + 1;
int lastQuarter = (presentQuarter - 1) > 0 ? presentQuarter - 1 : 4;
Run Code Online (Sandbox Code Playgroud)

我已经得到了,lastQuarter但我将如何得到上一季度的一年.

有人可以帮我这个吗?

java calendar date

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

在java中将"mm/yy"转换为"yyyy-mm-dd"

我需要将"11/17"字符串日期(2017年11月)转换为"2017-11-01"(2017年11月1日).

在Java中实现这一目标的最佳方法是什么?

我试过了:

String dayMonthYear = "11/17";
dayMonthYear = "01/" + dayMonthYear;

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yy");
DateTime dt = formatter.parseDateTime(dayMonthYear);
dt.year().setCopy(dt.getYear() + 2000);

DateTimeFormatter dtfOut = DateTimeFormat.forPattern("yyyy-MM-dd");
dayMonthYear = dtfOut.print(dt);
System.out.println(dayMonthYear); // "2017-11-01";
Run Code Online (Sandbox Code Playgroud)

和:

SimpleDateFormat dateFormatTwoDigitsYear = new SimpleDateFormat(TWO_DIGITS_YEAR_DATE_FORMAT);  //"dd/MM/yy"
SimpleDateFormat dateFormatFourDigitsYear = new SimpleDateFormat(FOUR_DIGITS_YEAR_DATE_FORMAT);//  "yyyy-MM-dd"
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -100);//??? I AM NOT SURE WHY DO I NEEED THIS??
dateFormatTwoDigitsYear.set2DigitYearStart(calendar.getTime());
try
{
    dayMonthYear = dateFormatFourDigitsYear.format(dateFormatTwoDigitsYear.parse(dayMonthYear));
}
catch (ParseException e)
{
    log.error("Error while formatting date …
Run Code Online (Sandbox Code Playgroud)

java date jodatime date-parsing simpledateformat

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

jasper 报告中的时区转换和日期格式?

我正在处理一个 Jasper 报告,我想在其中显示选定的日期范围和时间。我使用以下表达式来格式化日期,但它以 GMT 时区显示时间。

new SimpleDateFormat("dd-MMM-yyyy").format($P{START_DATE})+" "+new SimpleDateFormat("HH:mm").format($P{startTime})
Run Code Online (Sandbox Code Playgroud)

上面的代码给出的日期为 01-Mar-2019 14:30,根据 IST 应该是 01-Mar-2019 8:00PM。

如何处理时区以显示正确的时间?

java timezone jasper-reports date-conversion simpledateformat

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