我正在尝试将字符串转换为日期,我希望该日期的格式为“yyyy-MM-d HH:MM:ss”,我不知道如何将该格式转换为字符串。我的问题是,我希望以上述格式获取日期,而不是字符串,而是“date”?
我是这样做的
for(int k=0;k<12;k++)//for the months
{
//i have added if condtion for the months with 31 and 30 and 28 days
Calendar dateFromCal = Calendar.getInstance();
dateFromCal.setTime(date);
dateFromCal.set(year, k, 1, 0, 0, 0);
Calendar dateToCal = Calendar.getInstance();
dateToCal.setTime(date);
dateToCal.set(year, k, 31, 23, 59, 59);
//i have set the date format as 'yyyy:MM:dd HH:mm:ss'
dateFrom = dateFormat.format(dateFromCal.getTime());
dateTo = dateFormat.format(dateToCal.getTime());
fromdate = (Date)dateFormat.parse(dateFrom);
todate = (Date)dateFormat.parse(dateTo);
}
通过使用上述代码,我以以下格式获取日期
Sat Nov 01 00:00:00 GMT 2014
但我希望日期格式为
2014-11-01 00:00:00
注意:我希望此结果作为日期而不是字符串
请给我解决方案谢谢......
我对一个需要特定格式(javax.xml.datatype.XMLGregorianCalendar)的API也有同样的问题。在我的例子中,我通过java 7解决了这个问题
和
my_日期。setTimezone(DatatypeConstants.FIELD\u未定义)
通过这样做,您可以获得日期的最终结果。
注意:我希望此结果作为日期而不是字符串
简短的回答:这是不可能的。
详情:
A<代码>java。util。Date对象只是表示时间线上的一个瞬间,即自UNIX纪元(1970年1月1日,00:00:00 GMT)以来的毫秒数的包装。由于它不保存任何时区信息,其函数应用JVM的时区返回一个字符串,格式为EEE MMM dd HH:mm:ss zzz yyyy,由该毫秒值派生。获取java的字符串表示。util。日期对象的格式和时区不同,您需要使用所需格式和适用的时区,例如。
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.ENGLISH);
sdf.setTimeZone(TimeZone.getTimeZone("America/New_York"));
String strDateNewYork = sdf.format(date);
sdf.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
String strDateUtc = sdf.format(date);
事实上,没有一个标准的日期时间类具有保存格式信息的属性。即使某些库或自定义类promise这样做,也违反了单一责任原则。日期时间对象应该存储关于日期、时间、时区等的信息,而不是关于格式的信息。以所需格式表示日期时间对象的唯一方法是使用日期时间解析/格式类型将其格式化为字符串:
java。utilDate-Time API及其格式化API,SimpleDateFormat
已过时且容易出错。建议完全停止使用它们,并切换到现代日期时间API。
此外,下面引用的是来自Joda-Time主页的通知:
注意,从Java SE 8开始,要求用户迁移到Java。时间(JSR-310)-JDK的核心部分,它取代了这个项目。
使用java的解决方案。时间,现代日期时间API:
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
int year = 2021;
int month = 6;
int hour = 23;
int minute = 59;
int second = 59;
LocalDateTime ldt = LocalDate.of(year, month, 1)
.with(TemporalAdjusters.lastDayOfMonth())
.atTime(LocalTime.of(hour, minute, second));
// Default format i.e. ldt#toString
System.out.println(ldt);
// Custom format
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss", Locale.ENGLISH);
String formatted = dtf.format(ldt);
System.out.println(formatted);
}
}
输出:
2021-06-30T23:59:59
2021-06-30 23:59:59
在线演示
从Trail:Date-Time了解更多关于现代日期时间API的信息。
无论出于何种原因,如果你必须坚持使用Java 6或Java 7,你都可以使用Three-Ten Backport,它支持大部分Java。Java 6的时间功能
我想以上述格式获取日期,不是字符串,而是“日期”?
您要求的是特定格式的Date
——这就像说“我想要十六进制格式的int
”Date
没有格式——它只是时间上的一个瞬间。它不知道日历系统或时区——它只是自Unix时代以来的几毫秒。如果你想要一个格式化的值,那就是一个字符串。
您可能只需要保持日期不变,然后将其格式化,使其更接近用户界面。
问题内容: 我为jExcelApi类创建了一个包装器,以轻松地将对象列表导出到Excel。为了最大程度地减少对象创建,单元格格式将创建为静态字段,并在连续的导出调用中重用。但是我在使用日期格式时遇到了问题- 第一个调用的效果很好,但是在所有连续的导出中,日期单元格都使用数字格式而不是日期格式。如果我为日期格式创建了一个新对象而不是使用静态字段,那么一切都很好。是否有理由将相同格式的对象用于不同的工
我正在尝试将时间戳值转换为twig文件中的日期格式,但出现以下错误。 错误: 在呈现模板期间引发了异常(“DateTime::\构造():无法分析时间字符串(
设定年月日的排列顺序。
问题内容: 我正在学习Go,并且正在尝试对日期时间进行JSON解组。 我有一个用C语言编写的程序生成的JSON,我正在输出我认为有效的ISO8601 / RFC3339时区偏移量。我正在使用以下格式字符串: (请注意,本机不支持,我有一个包装器将其替换为纳秒级)。 然后,将产生以下结果: 但是在Go中取消编组此功能将无效:https : //play.golang.org/p/vzOXbzAwdW
我有两个字符串格式的日期:说,格式为。比较日期1和日期2的相等性的最佳方法是什么?我不关心时间,只关心日、年、月。我应该将它们转换为即时并进行比较吗?
问题内容: 我想格式化为。我已经尝试了以下步骤。 但我低于例外。 我该怎么办? 问题答案: 在这里,这有效: 在您的第一个样式中删除多余的“ T” 第二种格式不正确,应为dd-MMM-yyyy。 看看SimpleDateFormat的Javadoc