5
In ruby on Rails you have a command Time.zone.now
that returns me the date and time in this format => Sun, 18 May 2008 14:30:44 EDT -04:00
I need to get that same time zone return only on C#
Anyone have any idea?
5
In ruby on Rails you have a command Time.zone.now
that returns me the date and time in this format => Sun, 18 May 2008 14:30:44 EDT -04:00
I need to get that same time zone return only on C#
Anyone have any idea?
3
The equivalent of the Ruby command is Datetime.Now:
var dataAtual = DateTime.Now;
The problem is that the DateTime
does not store information from Timezone, then the god of C# gave this solution here:
public struct DateTimeWithZone
{
private readonly DateTime utcDateTime;
private readonly TimeZoneInfo timeZone;
public DateTimeWithZone(DateTime dateTime, TimeZoneInfo timeZone)
{
utcDateTime = TimeZoneInfo.ConvertTimeToUtc(dateTime, timeZone);
this.timeZone = timeZone;
}
public DateTime UniversalTime { get { return utcDateTime; } }
public TimeZoneInfo TimeZone { get { return timeZone; } }
public DateTime LocalTime
{
get
{
return TimeZoneInfo.ConvertTime(utcDateTime, timeZone);
}
}
public override String ToString()
{
return LocalTime.ToString() + " " + TimeZone.ToString();
}
}
Use:
var dataComTimeZone = new DateTimeWithZone(DateTime.Now, TimeZoneInfo.Local);
// dataComTimeZone.TimeZone retorna a TimeZone
// dataComTimeZone.LocalTime retorna a data atual
// dataComTimeZone.ToString() retorna os dois juntos
Maybe it wasn’t exactly in Ruby format, but it’s something very close.
1
The closest I could get to the Ruby command is below:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
DateTime agora = DateTime.Now;
DateTime utc = DateTime.UtcNow;
string ano = DateTime.Now.ToString("yyyy");
string dia = DateTime.Now.ToString("dd");
string diaNome = DateTime.Now.ToString("ddd");
string mesNome = DateTime.Now.ToString("MMM");
Console.Write(diaNome, new CultureInfo("en-US")); // Displays Wed
Console.Write(dia);
Console.Write(mesNome, new CultureInfo("en-US"));
Console.Write(ano);
Console.Write(agora.ToString("HH:mm:ss"));
TimeZoneInfo universalHora = TimeZoneInfo.Local;
Console.WriteLine(universalHora);
}
}
}
I also used Datetime and Timezoneinfo, but in a more robust and simple way. You can concatenate the values and make it look like the Ruby format.
1
Here a possible solution with some concatenations:
MessageBox.Show(DateTime.Today.DayOfWeek.ToString() +", "+ DateTime.Now.ToString("dd MM yyyy hh:MM:ss") +" "+TimeZoneInfo.Local.ToString());
exit:
Friday, 26 06 2015 04:06:24 (UTC-03:00) Brasilia
Browser other questions tagged c#
You are not signed in. Login or sign up in order to post.