我有问题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)
有什么解决办法吗?
我正在尝试为列表中的对象创建时间限制。这可能意味着物品的保质期可能为 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) 我不明白为什么解析后还能收到其他日期:
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) 我正在尝试将字符串日期值解析为日期对象。如果提供的日期格式不正确,则必须抛出错误。试图用 来实现这一点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 平台非常初学者和陌生。我有以下 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) 我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) 我有这样的格式的日期字符串: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这对我没有意义.任何人如果能够使用这种格式化并将其与今天的日期进行比较?
我已经达到上一季度,如下所示:
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但我将如何得到上一季度的一年.
有人可以帮我这个吗?
我需要将"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) 我正在处理一个 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