获取一年中的第一天和最后一天

Posted

技术标签:

【中文标题】获取一年中的第一天和最后一天【英文标题】:Get First And Last Day Of Year 【发布时间】:2017-08-19 05:13:26 【问题描述】:

在 VBA 中,我知道您可以使用此语法从日期中减去一年

Dim testdate As String, DateTest As String
testdate= "03/21/2017"
DateTest = Month(testdate) & "/" & Day(testdate) & "/" & Year(testdate) - 1

但是你怎么能找到给定年份的第一天和最后一天呢?例如,让我们使用相同的日期

testdate = "03/21/2017"

并获得以下值

firstdate = "01/01/2017"
lastdate = "12/31/2017"

【问题讨论】:

你可以使用YearEOMonth的组合 我强烈建议您在处理日期时考虑使用 Date 数据类型 - 使用 String 类型会在未来给您带来极大的痛苦,最好现在更改。 @YowE3K - 日期正在输入到用户表单文本框中。我可以为此设置日期类型还是必须是字符串,因为它是一个文本框? 它可能需要是文本框中的字符串,但是一旦用户输入,您应该尽快转换为Date。类似于Dim myDate As DateIf Not IsDate(TextBox1.Text) Then MsgBox "Not a date": Exit Sub Else myDate = CDate(TextBox1.Text)。这将允许用户在文本框中输入诸如“2017 年 3 月 27 日”之类的内容,并且 MyDate 将设置为 Date 27/03/2017(或 03/27/2017,如果您按照“mm/dd/yyyy " dates) 然后可用于任何与日期相关的计算。 【参考方案1】:

你可以使用DateSerial:

Sub Test()

    Dim dt As Date, firstDay As Date, lastDay As Date

    dt = Date
    firstDay = DateSerial(Year(dt), 1, 1)
    lastDay = DateSerial(Year(dt), 12, 31)

    Debug.Print firstDay
    Debug.Print lastDay

End Sub

【讨论】:

【参考方案2】:

如果您总是对年初和年底感兴趣,您可以只使用 1 月 1 日和 12 月 31 日。模仿你的语法:

Dim testdate As String, DateTest As String
testdate= "03/21/2017"
FirstDayOfYear = "1/1/" & Year(testdate)
LastDayOfYear = "12/31/" & Year(testdate) 

【讨论】:

以上是关于获取一年中的第一天和最后一天的主要内容,如果未能解决你的问题,请参考以下文章

js如何获取上个月第一天和最后一天

如何使用js获取某月的第一天和最后一天

js 获取当前月和当前周的第一天和最后一天

java获取当月的第一天和最后一天,获取本周的第一天和最后一天

java 怎样获取每个月的第一天和最后一天

python怎么获得每个月的第一天和最后一天