Lean
$LEAN_TAG$
LocalTimeKeeper.cs
1
/*
2
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
3
* Lean Algorithmic Trading Engine v2.0. Copyright 2014 QuantConnect Corporation.
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
8
*
9
* Unless required by applicable law or agreed to in writing, software
10
* distributed under the License is distributed on an "AS IS" BASIS,
11
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
* See the License for the specific language governing permissions and
13
* limitations under the License.
14
*/
15
16
using
System;
17
using
NodaTime;
18
19
namespace
QuantConnect
20
{
21
/// <summary>
22
/// Represents the current local time. This object is created via the <see cref="TimeKeeper"/> to
23
/// manage conversions to local time.
24
/// </summary>
25
public
class
LocalTimeKeeper
26
{
27
/// <summary>
28
/// Event fired each time <see cref="UpdateTime"/> is called
29
/// </summary>
30
public
event
EventHandler<TimeUpdatedEventArgs>
TimeUpdated
;
31
32
/// <summary>
33
/// Gets the time zone of this <see cref="LocalTimeKeeper"/>
34
/// </summary>
35
public
DateTimeZone
TimeZone
{
get
; }
36
37
/// <summary>
38
/// Gets the current time in terms of the <see cref="TimeZone"/>
39
/// </summary>
40
public
DateTime
LocalTime
{
get
;
private
set
; }
41
42
/// <summary>
43
/// Initializes a new instance of the <see cref="LocalTimeKeeper"/> class
44
/// </summary>
45
/// <param name="utcDateTime">The current time in UTC</param>
46
/// <param name="timeZone">The time zone</param>
47
internal
LocalTimeKeeper
(DateTime utcDateTime, DateTimeZone timeZone)
48
{
49
TimeZone
= timeZone;
50
LocalTime
= utcDateTime.ConvertTo(DateTimeZone.Utc,
TimeZone
);
51
}
52
53
/// <summary>
54
/// Updates the current time of this time keeper
55
/// </summary>
56
/// <param name="utcDateTime">The current time in UTC</param>
57
internal
void
UpdateTime(DateTime utcDateTime)
58
{
59
LocalTime
= utcDateTime.ConvertTo(DateTimeZone.Utc,
TimeZone
);
60
TimeUpdated
?.Invoke(
this
,
new
TimeUpdatedEventArgs(
LocalTime
,
TimeZone
));
61
}
62
}
63
}
Common
LocalTimeKeeper.cs
Generated by
1.8.17