我正在“重新开发”一个前一段时间在 PHP 中启动的应用程序。涉案开发人员很久以前就离开了公司,所有联系他的努力都被搁置了。
我不需要帮助将整个站点转换为一个非常简单的应用程序。但是,我们正在与 API 服务集成(谁的文档很差),我在理解他们的 dateTime 字符串时遇到了问题。
这是关于他们如何使用日期时间的摘录(唯一的一点)。
" 日期时间表示为使用日月年小时分钟和秒的算法派生的数字,如下所示:
date=year<<20;
date|=month<<16;
date|=day<<11;
date|=hour<<6;
date|=minute;
从给定的数字中解包日期如下:
year=(date & 0xfff00000) >> 20;
month=(date & 0x000f0000) >> 16;
day=(date & 0x0000f800) >> 11;
hour=(date & 0x000007c0) >> 6;
minute=(date & 0x0000003f);
"
现在是我的问题。开发人员(这是一个工作示例)创建了以下 PHP 函数,可将时间戳转换为所需格式。我不确定按位时间戳是否是“通用算法”。
我试过环顾四周,找不到任何东西。
/**
* Converts a unixtime stamp to a bitwise timestamp
*
* @access public
* @param mixed $unixtime
* @return void
*/
function convert_unixtime_to_bitwise($unixtime)
{
/*$year = date('Y', $unixtime);
$month = date('m', $unixtime);
$day = date('j', $unixtime);
$hour = date('G', $unixtime);
$min = date('i', $unixtime);*/
$year = date('Y', $unixtime);
$month = date('m', $unixtime);
$day = date('j', $unixtime);
$hour = date('G', $unixtime);
$min = date('i', $unixtime);
$date = 0;
$date = $year << 20;
$date |= $month << 16;
$date |= $day <<11;
$date |= $hour <<6;
$date |= $min;
return $date;
}
/**
* Converts a bitwise datestamp to a standard unixtime stamp
*
* @access public
* @param mixed $timestamp
* @return void
*/
function convert_bitwise_to_unixtime($timestamp)
{
$dateline = array();
$dateline['year'] = ($timestamp & 0xfff00000) >> 20;
$dateline['month'] =($timestamp & 0x000f0000) >> 16;
$dateline['day'] = ($timestamp & 0x0000f800) >> 11;
$dateline['hour'] = ($timestamp & 0x000007c0) >> 6;
$dateline['min'] = ($timestamp & 0x0000003f);
return mktime($dateline['hour'], $dateline['min'], 0, $dateline['month'], $dateline['day'], $dateline['year']);
}
任何人都可以帮助我以最简单的方式将其转换为 .Net。理想情况下,我会为 datetime 对象编写一个扩展方法以返回“按位?” 对象和扩展方法将按位时间戳转换为日期时间时间戳。理想情况下,我最终会得到类似于 bel..
public static class Extensions
{
public static BitWiseDateStamp ToBitWiseDateStamp(this DateTime timeStamp)
{
return BitWiseDateStamp.New(timeStamp);
}
}
public class BitWiseDateStamp
{
private string _value;
public string Value
{
get { return _value; }
set { _value = value; }
}
public static BitWiseDateStamp New(DateTime date)
{
var b = new BitWiseDateStamp();
var bitWiseStr = string.Empty;
//= Convert to bitwise string format...
b.Value = bitWiseStr;
return b;
}
public override string ToString()
{
return this._value;
}
public DateTime ToDateTime()
{
var date = DateTime.MinValue;
var dateStr = string.Empty;
//== Convert bitwise string to date string respresenation
DateTime.TryParse(dateStr, out date);
return date;
}
}
我非常感谢任何人可以提供的任何帮助。
干杯,
尼科