天道酬勤,学无止境

单独的日期和时间对象(Separate Date and Time objects)

问题

我有一个网络表单,用户可以在其中从日历弹出窗口中选择一个日期,从下拉列表中选择一个时间。 目前我正在尝试使用 Date 对象存储日期。

@Required
public Date date;

这个对象的输出类似于:

1970 年 1 月 1 日,格林威治标准时间 00:00:00

我真正想做的是将其分开并以27/02/2013等格式存储日期,并将时间作为 24 小时格式的单独对象,例如23:45 。 我不确定如何用 java 来做到这一点。

使用 SimpleDateFormat 解决:

//also the import
import java.text.*;

@Required
public SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yy");
public String date = simpleDateFormat.format(new Date());

@Required
public SimpleDateFormat simpleTimeFormat = new SimpleDateFormat("hh:mm");
public String time = simpleTimeFormat.format(new Date());
回答1

看看Calendar类。 它具有获取不同“日期部分”所需的所有方法。 另外,查看 java 中的SimpleDateFormat类以按需要的方式格式化日期。

日历 - http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html

SimpleDateFormat - http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

回答2

尝试这个:

SimpleDateFormat dateFormatter = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat timeFormatter = new SimpleDateFormat("HH:mm:ss");

String dateAsString = dateFormatter.format(date);
String timeAsString = timeFormatter.format(date);
标签

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 将天数组织为年、月、日、小时的单独部分。 爪哇(Organise number of days into separate sections for year, months, days, hours. Java)
    问题 有没有办法将通过计算两个日期之间的差异计算的天数组织成不同的部分,例如 364 天,它将是:0 年、11 个月、30 天、小时、分钟等。我想使用逻辑运算符可能像 % 和/一样工作,但由于不同的月份有不同的天数,有些年份是闰年,我不知道该怎么做。 任何帮助将非常感激。 我的代码: import java.util.*; public class CleanDate { public static void main(String[] args) { Calendar cDate = GregorianCalendar.getInstance(); cDate.set(2011, 0, 31, 00, 00, 00); Date date1 = cDate.getTime(); Date date2 = new Date(); Calendar calendar1 = Calendar.getInstance(); Calendar calendar2 = Calendar.getInstance(); calendar1.setTime(date1); calendar2.setTime(date2); long milliseconds1 = calendar1.getTimeInMillis(); long milliseconds2 = calendar2
  • Rails 4-将datetime转换为单独的日期和时间字段(Rails 4 - Convert datetime into separate date and time fields)
    问题 如何将mysql datetime字段转换为两个表单字段(1)仅日期,(2)仅时间,并在表单提交时将这两个字段组合回datetime格式? 这将允许使用以下gem,但将日期存储在单个datetime字段中: gem 'bootstrap-datepicker-rails' gem 'bootstrap-timepicker-rails' 提前致谢! 回答1 在@Althaf的帮助下找到了解决方案 向model.rb添加了虚拟属性。使用before_save回调将其转换回datetime。 before_save :convert_to_datetime def sched_date_field sched_date.strftime("%d/%m/%Y") if sched_date.present? end def sched_time_field sched_time.strftime("%I:%M%p") if sched_time.present? end def sched_date_field=(date) # Change back to datetime friendly format @sched_date_field = Date.parse(date).strftime("%Y-%m-%d") end def sched_time_field=(time
  • 将时间戳列拆分为单独的日期和时间列(Splitting timestamp column into separate date and time columns)
    问题 我有一个熊猫数据框,上面有超过1000个时间戳(如下),我想循环遍历它: 2016-02-22 14:59:44.561776 我很难将时间戳分为两列-“日期”和“时间”。 日期格式可以保持不变,但是时间必须转换为CST(包括毫秒)。 谢谢您的帮助 回答1 我不确定您为什么首先要这样做,但是如果您确实必须... df = pd.DataFrame({'my_timestamp': pd.date_range('2016-1-1 15:00', periods=5)}) >>> df my_timestamp 0 2016-01-01 15:00:00 1 2016-01-02 15:00:00 2 2016-01-03 15:00:00 3 2016-01-04 15:00:00 4 2016-01-05 15:00:00 df['new_date'] = [d.date() for d in df['my_timestamp']] df['new_time'] = [d.time() for d in df['my_timestamp']] >>> df my_timestamp new_date new_time 0 2016-01-01 15:00:00 2016-01-01 15:00:00 1 2016-01-02 15:00:00 2016-01-02 15:00
  • Rails 中的单独日期和时间表单字段(Separate date and time form fields in Rails)
    问题 我有一个带有日期时间列starts_at的 ActiveRecord 模型Event 。 我想提供一个表格,其中starts_at日期和时间是单独选择的(例如,日期为"23-10-2010" ,时间为"18:00" )。 这些字段应该由单列starts_at ,并且验证也最好针对starts_at 。 我当然可以处理虚拟属性和钩子,但我想要一个更优雅的解决方案。 我已经试验了两种composed_of (RDoc的),和属性装饰(灯塔讨论,github上)没有成功。 以下是我想要的粗略轮廓。 class Event < ActiveRecord::Base validates_presence_of :start_date end # View # On submission this should set start_date. form_for @event do |f| f.text_field :starts_at_date # date-part of start_date f.text_field :starts_at_time_of_day # time-of-day-part of start_date f.submit end 任何帮助表示赞赏。 回答1 今天正在研究这个 Rails 项目,并发现了这个 gem: https://github.com
  • 日期和时间的单独参数(Separate parameters for Date and Time)
    问题 我想在我的报告中使用一个参数作为日期,另一个用于时间,如下所示。 开始时间[16/01/2012][12.00 am] 任何人都可以帮助我吗? 回答1 正如我在评论中所说, SSRS不允许您为Date和Time设置单独的参数。 它只有一个参数Date/Time 。 如我所见,您有两种选择。 添加文本参数并将其视为时间。 然后,您可以根据您使用的技术进行一些验证。 解决这个问题的另一种方法是创建一个可能值的列表。 例如,您选择Integer类型,然后创建一个Available Values列表。 (见图片) 回答2 当然这是一个多步骤的过程: 设置一个TEXT的变量为'DATE'作为变量值并提示将左窗格中的“默认值”设置为“1/16/2012” 设置一个TEXT的变量为'TIME'作为变量值并提示将左窗格中的“默认值”设置为“00:00” 设置数据集 'AvailableDateTime' 以将两者组合成一个合法的日期时间字段: SELECT CAST(@Date + ' ' + @Time AS DateTime) AS Datetime 设置第三个 DATETIME 变量为 'DATETIME' 作为变量值并提示。 将此变量设置为在属性的左窗格中使用“AVAILABLE VALUES”作为“从查询中获取值”。 使用步骤 5 中的数据集。
  • 使用 SimpleDateFormat.parse() 解析日期时出现 NumberFormatException(NumberFormatException while parsing date with SimpleDateFormat.parse())
    问题 有一个函数来创建一个仅限时间的 Date 对象。 (为什么需要这样做是一个很长的故事,在这种情况下无关紧要,但我需要与 XML 世界中的一些东西进行比较,其中 TIME(即仅时间)是一个有效概念)。 private static final SimpleDateFormat DF_TIMEONLY = new SimpleDateFormat("HH:mm:ss.SSSZ"); public static Date getCurrentTimeOnly() { String onlyTimeStr = DF_TIMEONLY.format(new Date()); // line #5 Date onlyTimeDt = null; try { onlyTimeDt = DF_TIMEONLY.parse(onlyTimeStr); // line #8 } catch (ParseException ex) { // can never happen (you would think!) } return onlyTimeDt; } 可能至少有其他几种方法可以在 Java 中创建仅限时间的日期(或更准确地说,日期部分是 1970-01-01),但我的问题实际上与此无关。 我的问题是这段代码在生产环境中运行了很长时间后,开始在第 8
  • 在两个日期之间选择一个日期,同时考虑单独的时间字段(Selecting a date between two dates while also accounting for separate time field)
    问题 我在 Postgresql 中有一个日期和一个时间字段。 我正在用 python 阅读它,需要在某些时间过去的某些日子里整理东西。 步骤基本上是这样的: 从 x 中选择 * 其中日期 > 月日年在该子集中,只选择那些 > 给该日期的时间 AND date2 必须< monthdayyear2 AND time2 必须小于该日期给出的time2 我知道肯定有一些 python 方法可以做到这一点,通过迭代结果等等。 我想知道是否有比暴力强制更好的方法? 如果可能的话,我宁愿不运行多个查询,也不想在 fetchall() 中整理出很多额外的结果。 回答1 如果我理解你的设计,这真的是一个架构设计问题。 代替: CREATE TABLE sometable ( date1 date, time1 time, date2 date, time2 time ); 你通常想要: CREATE TABLE sometable ( timestamp1 timestamp with time zone, timestamp2 timestamp with time zone ); 如果你想时间戳自动转换为UTC,并返回给客户端的TimeZone ,或timestamp without time zone ,如果你想存储没有时区转换的原始时间戳。 如果包容性测试没问题,你可以写: SELECT
  • 将本地日期和时间转换为 UTC,然后将 UTC 转换为本地日期和时间(Local date & time to UTC and then UTC to local date & time)
    问题 我正在尝试将语言环境时间转换为 UTC,然后将 UTC 转换为语言环境时间。 但我没有得到结果。 public class DateDemo { public static void main(String args[]) { DateFormat dateFormatter = DateFormat.getDateTimeInstance (DateFormat.SHORT, DateFormat.SHORT, Locale.getDefault()); TimeZone.setDefault(TimeZone.getDefault()); SimpleDateFormat simpleDateFormatter = new SimpleDateFormat("dd/MM/yyyy"); SimpleDateFormat simpleTimeFormatter = new SimpleDateFormat("hh:mm:ss a"); Date today = new Date(); String localeFormattedInTime = dateFormatter.format(today); try { Date parsedDate = dateFormatter.parse(localeFormattedInTime); System.out.println(
  • 将日期数据 (m/d/y) 拆分为 3 个单独的列(Split date data (m/d/y) into 3 separate columns)
    问题 我需要将日期(m/d/y 格式)转换为 3 个单独的列,我希望在这些列上运行算法。(我正在尝试将我的日期转换为儒略日数)。 看到另一个用户使用 Oracle 将数据分成多个列的建议。 我正在使用 R 并且完全不知道如何适当地编码。 A1,A2... 会代表我的新列标题吗,“更新集”部分的格式有何不同? update <tablename> set A1 = substr(ORIG, 1, 4), A2 = substr(ORIG, 5, 6), A3 = substr(ORIG, 11, 6), A4 = substr(ORIG, 17, 5); 我正在努力提高我的 R 技能,但无法解决这个问题……非常感谢任何帮助。 提前致谢... :) 回答1 给定一个文本变量 x,如下所示: > x [1] "10/3/2001" 然后: > as.Date(x,"%m/%d/%Y") [1] "2001-10-03" 将其转换为日期对象。 然后,如果您需要它: > julian(as.Date(x,"%m/%d/%Y")) [1] 11598 attr(,"origin") [1] "1970-01-01" 为您提供儒略日期(相对于 1970-01-01)。 不要尝试子字符串的事情...... 有关更多信息,请参阅 help(as.Date)。 回答2 我使用Date对象的format
  • Oracle — 独立的时间和日期(Oracle — separate time and date)
    问题 我有一个关于 Oracle 的问题(我已经安装了 Oracle 11g Express Edition)。 我想插入“日期”和“时间”的值,但我无法将它们分开。 create table Match ( numMatch number(2) constraint PKMatch primary key, dateM date, heureM date, numE_Eq number(2), numE_Eq2 number(2), nomTerrain varchar2(30) ); --"工具"=>"首选项"=>"格式日期:DD/MM/YYYY HH24:MI:SS" insert into Match values (1,to_date ('10/12/2010','DD/MM/YYYY'),to_date('15:00:00','HH24:MI:SS'),1,3,'Stade Argentina' ); 结果: dateM: 10/12/2010 00:00:00 heureM: 01/11/2012 15:00:00 PS:我试过 to_char 而不是 to_date,但它根本不起作用。 是的,我知道“DATE 数据类型同时包含日期和时间”,但坚持在表中分别显示日期和时间的是教授,我以前看过你的解决方案,但对我来说,这是一个查询,不要在表中“插入值”。
  • 从单独的列中在实体框架中添加日期时间和时间(Add Datetime and time in Entity Framework from separate column)
    问题 我想得到所有尚未结束的事件 select * FROM [Events] where EndDate+cast(EndTo as datetime)>GETDATE() 这是完美的工作。 这是我在 ( EndTo: 11:00:00.0000000, END DATE: 2016-05-26 ) 中的值 我尝试使用 var list = dbContext.Events .Where(e => e.EndDate + e.EndTo > DateTime.Now) .ToList(); 我收到一个错误 DbArithmeticExpression 参数必须具有数字公共类型。 如何在实体框架中编写此查询? 回答1 这是因为您尝试使用TimeSpan添加DateTime ,这是不允许的。 为此,请尝试使用类似DateTime.AddSeconds(TimeSpan.TotalSeconds) : var list= dbContext.Events .Where(e=>e.EndDate.AddSeconds(e.EndTo.TotalSeconds) > DateTime.Now) .ToList(); 或者,如果这是 LINQ to Entities: var list= dbContext.Events .Where(e=>EntityFunctions
  • 获取 Java 日期或日历的时间组件(Getting the Time component of a Java Date or Calendar)
    问题 有没有一种简单或优雅的方法来获取 Java 日期(或日历,对我来说真的无关紧要)的一天中的时间(小时/分钟/秒/毫秒)部分? 我正在寻找一种单独考虑日期(年/月/日)和时间部分的好方法,但据我所知,我一直坚持单独访问每个字段。 我知道我可以编写自己的方法来单独获取我感兴趣的字段,但我会将其作为静态实用程序方法来执行,这很丑陋。 此外,我知道 Date 和 Calendar 对象具有毫秒精度,但在任何一种情况下我都看不到访问毫秒组件的方法。 编辑:我不清楚这一点:使用 Date::getTime() 或 Calendar::getTimeInMillis 之一对我来说并不是非常有用,因为它们返回自纪元以来的毫秒数(由该日期或日历表示) ,实际上并没有将一天中的时间与其他信息分开。 @Jherico 的答案是最接近的,我认为,但绝对是我仍然必须采用我自己编写的方法。 这并不完全是我想要的,因为它仍然在返回的毫秒值中包含小时、分钟和秒——尽管我可能可以让它为我的目的而工作。 我仍然认为每个组件都是独立的,当然,它们不是。 您可以将时间写为自任意参考日期以来的毫秒数,或者您可以写出与year/month/day hours:minutes:seconds.milliseconds完全相同的时间year/month/day hours:minutes:seconds
  • 当我生成一个 java Calendar 对象时,我在生成什么?(What am I generating when I generate a java Calendar object?)
    问题 我想知道我应该如何使用 java Calendar 对象才能正确使用它们(使用这个类是我的任务所必需的,所以虽然我很想使用一些更好的选项 - 它们不是选项)。 我在这里阅读了文档:https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#:~:text=A%20Calendar%20object%20can%20produce,as %20well%20as%20their%20 的意思。 我仍然不明白如何正确使用日历对象。 我需要代表几个火车站的到达和离开时间。 我应该为每个到达时间和离开时间分别使用单独的 Calendar 对象吗? 我可以将两者都包含在同一个对象中吗? 单个 Calendar 对象代表什么? 是单个时间点(即年、月、日、小时、分钟)吗? 现在我为每个车站的到达和离开时间使用单独的对象。 这意味着我有大量的 Calendar 对象。 我是否正确使用它们? 我的代码片段是: Calendar TimeArrival = Calendar.getInstance(); Calendar TimeDeparture = Calendar.getInstance(); TimeArrival.set (2020,8,20,00,01); TimeDeparture.set(2020,8,20
  • 想要以“ dd / MM / yyyy HH:mm:ss.SS”格式显示当前日期和时间(want current date and time in “dd/MM/yyyy HH:mm:ss.SS” format)
    问题 我正在使用以下代码以“ dd / MM / yyyy HH:mm:ss.SS”格式获取日期。 import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateAndTime{ public static void main(String[] args)throws Exception{ Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.SS"); String strDate = sdf.format(cal.getTime()); System.out.println("Current date in String Format: "+strDate); SimpleDateFormat sdf1 = new SimpleDateFormat(); sdf1.applyPattern("dd/MM/yyyy HH:mm:ss.SS"); Date date = sdf1.parse(strDate); System.out.println("Current date in Date
  • CakePHP 3时间列获取添加的日期(CakePHP 3 time column gets date added)
    问题 我在MySQL数据库中将许多列定义为“时间”。 也就是说,他们有时间,但没有日期。 当CakePHP 3 ORM读取它们时,它们将被转换为Cake \ I18n \ Time对象(通过Cake \ Database \ Type \ TimeType类),但是结果中始终包含日期和时间,并且日期设置为当前日期。 例如,如果值是“ 20:00:00”,则debug($record['start_time'])将生成: object(Cake\I18n\Time) { 'time' => '2015-06-21T20:00:00+0000', 'timezone' => 'UTC', 'fixedNowTime' => false } 当我在模板中回显它(未使用setToStringFormat )时,我得到类似6/21/15 8:00 PM 。 当然,我可以使用$this->Time->format将其重新设置为仅时间格式,但是似乎很奇怪,我需要这样做。 为什么Cake忽略了这只是一个时间这一事实,更重要的是,有没有办法使它停止? 回答1 日期/时间值都被强制转换为相同的基础结构,即DateTime或DateTimeImmutable对象,因此,仅日期值自然会添加一个时间值( 00:00:00 ),并且仅时间值会附带日期(当前日期)。
  • 将日期时间列拆分为日期和时间变量(Split date-time column into Date and time variables)
    问题 我有一个格式为“ Ymd H:M:S”的“日期时间”列“开始”。 我想将此列分为“日期”和“时间”列。 我尝试了以下方法: df$Date <- sapply(strsplit(as.character(df$Start), " "), "[", 1) df$Time <- sapply(strsplit(as.character(df$Start), " "), "[", 2) 但是,如果我使用函数str(df) ,则此方法有效 # 'data.frame': 18363 obs. of 19 variables:<br> # $ Start : Factor w/ 67 levels "2013-09-01 08:07:41.000",..: 1 1 1 1 1 1 1 1 1 1 ... # [snip] 因此,现在我只需要知道如何将时间和日期从factor转换为“时间”和“日期”。 回答1 怎么样 df$Date <- as.Date(df$Start) df$Time <- format(df$Start,"%H:%M:%S") 回答2 df$Date <- as.Date(df$Start) # already got this one from the answers above df$Time <- format(as.POSIXct(df$Start)
  • JAXB可以处理java.time对象吗?(Can JAXB handle java.time objects?)
    问题 我知道JAXB(用于XML绑定的Java体系结构)可以编组/取消编组java.util.Date对象,如Blaise Doughan的回答所示。 但是,Java 8中新的java.time包对象(例如ZonedDateTime)又如何呢? JAXB是否已更新为可以处理这种新内置的数据类型? 回答1 在Java SE 8中,尚未更新JAXB以支持java.time类型。 实际上,在参考实现中存在与此相关的问题。 您需要创建并使用XmlAdapter来处理这些类型。 使用与本帖子JAXB和Joda-Time:日期和时间中所述的与Joda-Time相似的方法。 您可能可以为java.time使用适配器的此实现。 回答2 我们不能使用接受的答案中链接的库,因为它掩盖了一个重要的细节:在XML Schema中,日期/时间值允许缺少时区偏移量。 适配器必须能够处理这种情况。 另外,必须支持Java没有仅日期数据类型的事实。 jTextTime库解决了这个问题。 该库围绕JDK8 OffsetXXX日期/时间类展开,因为它们是XML Schema类型date , dateTime和time的(唯一)自然等效项。 像这样使用: 添加依赖项: <dependency> <groupId>com.addicticks.oss</groupId> <artifactId>jtexttime<
  • 检索上周一和周五的日期的最佳方法是什么(What is the best way to retrieve the dates for last Monday and Friday)
    问题 我需要获取上周的星期一和星期五的日期。 为此,我要获取本周星期一的日期并减去7天。 这给了我上周星期一的日期。 要获取星期五的日期,我必须添加4。这让我有些困惑,因为出于某种原因,一周的第一天是星期日,而不是英国的星期一。 无论如何,这是我如何获取日期。 // Get the dates for last MON & FRI Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); cal.add(Calendar.DAY_OF_WEEK, -7); cal.set(Calendar.HOUR_OF_DAY,0); cal.set(Calendar.MINUTE,0); cal.set(Calendar.SECOND,0); cal.set(Calendar.MILLISECOND,0); // Get the date on Friday cal.add(Calendar.DAY_OF_WEEK, 4); cal.set(Calendar.HOUR_OF_DAY,23); cal.set(Calendar.MINUTE,59); cal.set(Calendar.SECOND,59); cal.set(Calendar
  • 将日期的数字表示(excel 格式)转换为 python 日期和时间,然后将它们拆分为 Pandas 中的两个单独的数据框列(convert numerical representation of date (excel format) to python date and time, then split them into two seperate dataframe columns in pandas)
    问题 我正在电子表格中导入一些数据。 它在数据框中,但日期采用数字表示或格式 41516.43 首先,我想将其转换为日期和时间对象 date_val = 30/08/2013 10:13:26 AM 然后我想将 date_val 分别拆分为日期和时间,并将它们放在我的数据框(df)中的单独列中 | **original date** | **date** | **time** | 41516.43 30/08/2013 10:13:26 AM 回答1 从另一个问题拼凑起来: In [11]: s = pd.Series([41516.43]) In [12]: from xlrd.xldate import xldate_as_tuple In [13]: from datetime import datetime In [14]: s.apply(lambda x: datetime(*xldate_as_tuple(x, 0))) Out[14]: 0 2013-08-30 10:19:12 dtype: datetime64[ns] 注意:大概略有不同是由于您给出的浮点数四舍五入。 和“裸指关节不系安全带使用自担风险”版本: In [21]: pd.Timestamp('1899-12-30') + (pd.offsets.Day(1).nanos * s).astype
  • 将GregorianCalendar与SimpleDateFormat一起使用(Using GregorianCalendar with SimpleDateFormat)
    问题 因此,我一直在为这个(应该是)简单的练习而绞尽脑汁,以使该程序将日期字符串转换为GregorianCalendar对象,对其进行格式化,并在完成后再次将其作为字符串返回。 这是程序的最后一点,它从文件中获取一小段文本,将其分解为单独的记录,然后将记录分解为单独的数据并将它们分配给个人对象。 我已经在多个位置检查了代码,直到我调用format函数(该函数抛出IllegalArgumentException之前,该代码确实执行了应做的工作。 已为GergorianCalendar对象分配了应该分配的值(尽管再次打印,如下所示),但是格式不会接受该对象进行格式化。 不幸的是,讲师不太确定如何使用GregorianCalendar和SimpleDateFormat (但已分配给我们使用它们),并说:“只是Google……”,我尝试了一下,但发现没有任何帮助。 到目前为止,我的代码是: public class DateUtil { public static GregorianCalendar convertFromDMY(String dd_mm_yy) throws ParseException{ // this actually works, got rid of the original code idea String[] splitDate = dd_mm_yy