In my Azure Function I did a WEBSITE_TIME_ZONE
configuration as Europe/London
. In my base class I’m creating Date Objects as below:
<code>public class BaseService
{
public DateTime Yesterday { get; set; }
public DateTime Today { get; set; }
public BaseService()
{
SeedData();
}
private void SeedData()
{
// Configure Processing Dates
bool isManul = Environment.GetEnvironmentVariable(ConfigConstants.IsManual).ExactBool();
DateTime processingDate = isManul ? Environment.GetEnvironmentVariable(ConfigConstants.ManualDate).ExactDateTime() : DateTime.Now;
Yesterday = processingDate.AddDays(-1);
Today = processingDate;
}
}
</code>
<code>public class BaseService
{
public DateTime Yesterday { get; set; }
public DateTime Today { get; set; }
public BaseService()
{
SeedData();
}
private void SeedData()
{
// Configure Processing Dates
bool isManul = Environment.GetEnvironmentVariable(ConfigConstants.IsManual).ExactBool();
DateTime processingDate = isManul ? Environment.GetEnvironmentVariable(ConfigConstants.ManualDate).ExactDateTime() : DateTime.Now;
Yesterday = processingDate.AddDays(-1);
Today = processingDate;
}
}
</code>
public class BaseService
{
public DateTime Yesterday { get; set; }
public DateTime Today { get; set; }
public BaseService()
{
SeedData();
}
private void SeedData()
{
// Configure Processing Dates
bool isManul = Environment.GetEnvironmentVariable(ConfigConstants.IsManual).ExactBool();
DateTime processingDate = isManul ? Environment.GetEnvironmentVariable(ConfigConstants.ManualDate).ExactDateTime() : DateTime.Now;
Yesterday = processingDate.AddDays(-1);
Today = processingDate;
}
}
In another service that is inherited by this base class, I’m using these date objects to query MongoDB
<code>public class MyService : BaseService
{
var filter = fd.Gte(FieldConstants.CreatedDate, Yesterday.Date)
& fd.Lt(FieldConstants.CreatedDate, Today.Date);
////
}
</code>
<code>public class MyService : BaseService
{
var filter = fd.Gte(FieldConstants.CreatedDate, Yesterday.Date)
& fd.Lt(FieldConstants.CreatedDate, Today.Date);
////
}
</code>
public class MyService : BaseService
{
var filter = fd.Gte(FieldConstants.CreatedDate, Yesterday.Date)
& fd.Lt(FieldConstants.CreatedDate, Today.Date);
////
}
But, what I observed in MongoDB log is (Assuming Today is “27-jun-2024”) that the Query utilized wrong Date with TimeZone issue:
Expected
<code>"query": {
"processedDate": {
"$lt": {
"$date": "2024-06-26T00:00:00Z"
}
}
},
</code>
<code>"query": {
"processedDate": {
"$lt": {
"$date": "2024-06-26T00:00:00Z"
}
}
},
</code>
"query": {
"processedDate": {
"$lt": {
"$date": "2024-06-26T00:00:00Z"
}
}
},
Actual
<code>"query": {
"processedDate": {
"$lt": {
"$date": "2024-06-25T23:00:00Z"
}
}
},
</code>
<code>"query": {
"processedDate": {
"$lt": {
"$date": "2024-06-25T23:00:00Z"
}
}
},
</code>
"query": {
"processedDate": {
"$lt": {
"$date": "2024-06-25T23:00:00Z"
}
}
},