我们的一位客户希望能够输入仅2位数字的年份作为年份部分。该日期将是过去的日期,因此如果2位数字的年份在当前年份之后,我们希望它在上个世纪起作用,而如果2位数字的年份等于或小于当前年份,则我们希望它在本世纪起作用。
截至今天10/30/2008
01/01/01 = 01/01/2001
01/01/09 = 01/01/1909
这是一个奇怪的要求,我解决了这个问题,只是不喜欢我的解决方案。感觉有更好的方法可以做到这一点。
谢谢您的帮助。
public static String stupidDate(String dateString)
{
String twoDigitYear = StringUtils.right(dateString, 2);
String newDate = StringUtils.left(dateString, dateString.length() - 2);
int year = NumberUtils.toInt(twoDigitYear);
Calendar c = GregorianCalendar.getInstance();
int centuryInt = c.get(Calendar.YEAR) - year;
newDate = newDate + StringUtils.left(Integer.toString(centuryInt), 2) + twoDigitYear;
return newDate;
}
Groovy脚本(足够容易放入Java中)演示了@bobince关于SimpleDateFormat的观点。
import java.text.SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat('MM/dd/yy')
SimpleDateFormat fmt = new SimpleDateFormat('yyyy-MM-dd')
Calendar cal = Calendar.getInstance()
cal.add(Calendar.YEAR, -100)
sdf.set2DigitYearStart(cal.getTime())
dates = ['01/01/01', '10/30/08','01/01/09']
dates.each {String d ->
println fmt.format(sdf.parse(d))
}
产量
2001-01-01
2008-10-30
1909-01-01
问题内容: 我有一个日期为dd-mm-yyyy格式的日期(在我的数据库内)。我需要将其转换为dd-mm-yy格式。我从db中检索了日期并将其存储在字符串中。 1990并不是完全需要的,只需要90.使用java中的split()我尝试了一些东西,但它不会帮助我。任何人都可以帮忙。任何帮助将不胜感激。 问题答案: 试试下面的代码
问题内容: 我有一个JODA 。我想将其转换为日期格式。所以我期望代码返回日期-12/12/31。 代码- 结果: 当我执行以下操作时,我得到了预期的输出,但是我不知道如何将其转换为Date- 请帮我。 谢谢 编辑-我希望最终结果是dd / mm / yy格式的使用日期。我不希望String输出。我的输入是Joda DateTime yyyy-MM- ddThh:mm:ss:+ GMT。我需要将J
问题内容: 当我在下面的代码下运行时,出现Unparseable错误。如何将dd MMM yyyy格式转换为dd / MM / yyyy格式? 问题答案: 假设您修复了明显的语法错误,则: 您要做的就是为您需要解析的格式创建一个解析器,并为您想要的格式创建一个格式化器:
代码如下: doc[i]["Time"]值应该是军事时间,如19:42。我遵循了使用DateFormat的准则,但是最终结果变量time包含“1970-01-01 19:42:00.000”。有没有办法让时间刚好包含“19.42”?
我正试图用2018年9月4日的下午6:30:00(2018年3月9日)获得这个日期,但我得到的是2017年12月364日的下午6:30:00,以下是我尝试过的。
我正在进行JavaScript验证,验证文本框的日期是否等于当前日期。 如果大于或等于今天的日期,则显示错误消息。 注意:在我的中,我已将日期转换为格式。所以我需要检查date与格式的当前日期。这是我的代码: 我需要使用日期的格式来检查我的文本框中的日期,因此我今天的值只能使用日期的格式。