在我的winform应用程序中,我需要在整个项目中从timestamp值转换为DateTime对象。所以这就是我所做的:
public class UnixTool {
public DateTime Unix2Time(Int64 timeStamp, TimeZoneInfo LocalTimeZone) {
return TimeZoneInfo.ConvertTimeFromUtc(baseTime.AddSeconds(timeStamp), LocalTimeZone);
}
public Int64 Time2Unix(DateTime dateTime, TimeZoneInfo LocalTimeZone) {
return (Int64)(TimeZoneInfo.ConvertTimeToUtc(dateTime, LocalTimeZone).Subtract(baseTime).TotalSeconds);
}
}
在其他课程中,我尝试使用Unix2Time
方法,如:
DateTime dt = UnixTool.Unix2Time(localTimeStampValue, localTimeZone);
但它出现了错误:
CS0120:非静态字段,方法或属性'UnixTools.Unix2Time(long,TimeZoneInfo)'
需要对象引用我该怎么做才能解决这个问题?是什么导致我的程序错误?
答案 0 :(得分:1)
您应该使用静态类,如下所示:
public static class UnixTool {
public static DateTime Unix2Time(Int64 timeStamp, TimeZoneInfo LocalTimeZone) {
return TimeZoneInfo.ConvertTimeFromUtc(baseTime.AddSeconds(timeStamp), LocalTimeZone);
}
public static Int64 Time2Unix(DateTime dateTime, TimeZoneInfo LocalTimeZone) {
return (Int64)(TimeZoneInfo.ConvertTimeToUtc(dateTime, LocalTimeZone).Subtract(baseTime).TotalSeconds);
}
}
班级不一定是静态的。
答案 1 :(得分:0)
您必须将Unix2Time
声明为static
:
public static DateTime Unix2Time(Int64 timeStamp, TimeZoneInfo LocalTimeZone)
和Time2Unix
如果你想要有相同的行为。
默认情况下,C#中的方法需要周围类的实例。